2012-01-14 7 views
-1

Je reçois plusieurs erreurs error LNK2019: unresolved external symbol, mais ils ne sont pas dus à dll s, lib s, ou des erreurs OO comme dans tous les autres messages StackOverflow sur cette erreur de liaison.Visual Studio C++ 2010 erreur de lien

code:

https://github.com/mcandre/fgdump/tree/master/cachedump

Trace:

1>------ Build started: Project: cachedump, Configuration: Release Win32 ------ 
1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification 
1>cachedump.obj : error LNK2019: unresolved external symbol "void __cdecl rc4_crypt(struct rc4_state *,unsigned char *,int)" ([email protected]@[email protected]@[email protected]) referenced in function "unsigned long __cdecl DumpCache(void)" ([email protected]@YAKXZ) 
1>cachedump.obj : error LNK2019: unresolved external symbol "void __cdecl rc4_setup(struct rc4_state *,unsigned char *,int)" ([email protected]@[email protected]@[email protected]) referenced in function "unsigned long __cdecl DumpCache(void)" ([email protected]@YAKXZ) 
1>cachedump.obj : error LNK2019: unresolved external symbol "void __cdecl md5_finish(struct md5_context *,unsigned char * const)" ([email protected]@[email protected]@[email protected]) referenced in function "unsigned long __cdecl DumpCache(void)" ([email protected]@YAKXZ) 
1>cachedump.obj : error LNK2019: unresolved external symbol "void __cdecl md5_update(struct md5_context *,unsigned char *,unsigned long)" ([email protected]@[email protected]@[email protected]) referenced in function "unsigned long __cdecl DumpCache(void)" ([email protected]@YAKXZ) 
1>cachedump.obj : error LNK2019: unresolved external symbol "void __cdecl md5_starts(struct md5_context *)" ([email protected]@[email protected]@@Z) referenced in function "unsigned long __cdecl DumpCache(void)" ([email protected]@YAKXZ) 
1>C:\Users\andrew\Desktop\src\fgdump\cachedump\Release\cachedump.exe : fatal error LNK1120: 5 unresolved externals 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

abc

+0

Vous n'êtes pas nouvelle à stackoverflow. Vous ne savez pas que ce genre de question sera fermé en un rien de temps? –

+0

Cette question n'est pas un doublon; il diffère considérablement des autres publications sur LNK2019. La cause première est remarquablement différente car ce code n'utilise PAS 'dll's, n'utilise PAS' lib's, et n'utilise pas OO. – mcandre

+0

Je n'ai pas dit que c'est un doublon. C'est juste une question qui ne convient pas pour SO, parce que vous nous avez donné des tonnes de code et demandez à trouver votre erreur. Qu'est-il arrivé à un exemple minimal qui reproduit le problème? –

Répondre

1

fichiers .c sont compilés par cl code C, alors que .cpp fichiers sont compiles que le code C++. En raison de la différence des définitions de symboles dans C et C++ code votre code C++ ne peut pas voir les fonctions du code C.

Utilisez extern "C" wrapper en-têtes, ou mieux utiliser même langue pour l'ensemble du projet

Pour extern "C" wrapper utiliser le modèle suivant

#ifdef __cplusplus 
extern "C" 
{ 
#endif 

//put C-function declarations here  

#ifdef __cplusplus 
} 
#endif 
+0

Merci. Malheureusement, l'utilisation de ceci ne résout pas mon problème, et étrangement, d'autres codes dans le projet se lient très bien sans utiliser les déclarations externes. – mcandre

+0

Cela aurait dû résoudre le problème. _Did_ tu as essayé ça? Si oui, avez-vous essayé? De cause, l'autre code sera lié, car ce code est C++ et il est utilisé par le code C++. – Lol4t0

+0

Veuillez télécharger et ouvrir la solution Visual Studio. Vous verrez par vous-même que l'ajout d'externs n'aide pas. – mcandre