Onde está o WCTYPE no Visual C 2008 Express?
-
22-09-2019 - |
Pergunta
Estou portando software de terceiros do Linux para o Windows usando o Visual C 2008 Express.
Tenho problemas apenas com a função `wctype '. É declarado em %vcdir %/incluir/wctype.h arquivo da seguinte forma:
_MRTIMP2 wctype_t __cdecl wctype (const char *);
Mas, ao tentar vincular um erro seguinte:
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
O código de teste está seguindo:
#include <wctype.h>
int
main (void)
{
return (int) wctype ("alpha");
}
Como você pode ver na mensagem de erro, o código está compilando OK, mas não pode vincular.
O que fazer? Não sou um desenvolvedor deste software, por isso não quero substituir a função `wctype 'por outro, porque pode confundir desenvolvedores originais.
Obrigado pela paciência.
PS Eu também olhei para a tabela de importação do msvcrt90.dll com Walker de dependência e não há função 'WCTYPE'.
Solução
Experimente isso:
cl test.c /link MSVCPRT.LIB
Outras dicas
Você precisa se vincular ao libcp.lib, conforme mencionado aqui:
http://msdn.microsoft.com/en-us/library/aa246681(vs.60).aspx
Se você usar msvcprt.lib, precisará redistribuir uma DLL dependendo da sua configuração (por exemplo, msvcp90.dll). Se você não quiser redistribuir, tente isto:
cl test.c /link libcpmt.lib
Uma lista de todas as bibliotecas a que vincular estão aqui (veja a parte inferior): http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx