2010-01-01 11 views
0

Je transfère des logiciels tiers de Linux vers Windows en utilisant Visual C 2008 Express.Où est wctype dans Visual C 2008 Express?

J'ai des problèmes avec la fonction `wctype '. Il est déclaré en% VCDIR%/include/fichier wctype.h comme suit:

_MRTIMP2 wctype_t __cdecl wctype (const char *); 

Mais, en essayant de lier un avoir l'erreur suivante:

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 

Le code de test est le suivant:

#include <wctype.h> 

int 
main (void) 
{ 
    return (int) wctype ("alpha"); 
} 

Comme vous pouvez le voir dans le message d'erreur, le code compile bien, mais ne peut pas lier.

Que faire? Je ne suis pas un développeur de ce logiciel, donc je ne veux pas remplacer la fonction `wctype 'par une autre, car cela peut perturber les développeurs originaux.

Merci pour votre patience.

P.S. J'ai aussi regardé la table d'importation du fichier MSVCRT90.DLL avec Dependency Walker et il n'y a pas de fonction `wctype '.

Répondre

1

Essayez ceci:

cl test.c /link MSVCPRT.LIB

+0

Oui, cela est la bonne réponse. Lier à libcmt.lib provoque des problèmes horribles. –

0

Si vous utilisez MSVCPRT.lib vous devrez redistribuer une DLL en fonction de votre installation (par exemple MSVCP90.dll). Si vous ne voulez pas essayer de redistribuer:

cl test.c /link libcpmt.lib 

Une liste de toutes les bibliothèques de lien vers sont ici (regardez en bas): http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx