Вопрос

Я переношу стороннее программное обеспечение с 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top