Где находится wctype в Visual C 2008 Express?
-
22-09-2019 - |
Вопрос
Я переношу стороннее программное обеспечение с Linux на Windows, используя Visual C 2008 Express.
У меня проблемы только с функцией wctype.Он объявлен в файле %VCDIR%/include/wctype.h следующим образом:
_MRTIMP2 wctype_t __cdecl wctype (const char *);
Но при попытке связать возникает следующая ошибка:
C:\test>cl test.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
test.c
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:test.exe
test.obj
test.obj : error LNK2019: unresolved external symbol _wctype referenced in function _main
test.exe : fatal error LNK1120: 1 unresolved externals
Тестовый код следующий:
#include <wctype.h>
int
main (void)
{
return (int) wctype ("alpha");
}
Как вы можете видеть в сообщении об ошибке, код компилируется нормально, но не может связать его.
Что делать?Я не являюсь разработчиком этого программного обеспечения, поэтому не хочу заменять функцию wctype другой, поскольку это может сбить с толку первоначальных разработчиков.
Спасибо за терпение.
P.S.Я также просмотрел таблицу импорта файла MSVCRT90.DLL с помощью Dependency Walker и обнаружил, что функция wctype отсутствует.
Решение
Попробуй это:
cl test.c /link MSVCPRT.LIB
Другие советы
Вам необходимо подключиться к libcp.lib, как указано здесь:
http://msdn.microsoft.com/en-us/library/aa246681(VS.60).aspx
Если вы используете msvcprt.lib, вам придется перераспределить DLL в зависимости от ваших настроек (например,MSVCP90.dll).Если вы не хотите распространять, попробуйте следующее:
cl test.c /link libcpmt.lib
Список всех библиотек, на которые можно ссылаться, находится здесь (посмотрите внизу): http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx