2010-04-04 28 views
1

J'ai une DLL que j'essaie de lier avec une bibliothèque libjpeg LIB utilisant MSVC 2008 qui génère des erreurs de symbole externe non résolues pour les fonctions libjpeg. J'ai également un projet de test qui lie avec le même fichier de bibliothèque libjpeg et des liens sans erreur et fonctionne bien aussi.MSVC 2008 - Non résolues Erreurs externes avec LIB mais uniquement avec DLL, pas avec le projet EXE

J'ai triplé mon chemin LIB et les paramètres de la liste LIBS dépendante et les ai littéralement copiés et collés du projet EXE au projet DLL. Je reçois toujours les erreurs. Les en-têtes libjpeg sont entourés par extern «C» donc ce n'est pas un problème de nom et les avertissements externes non résolus montrent les fonctions «manquantes» de libjpeg comme non-décorées (juste un trait de soulignement et le suffixe prénom).

Que pourrait faire l'éditeur de liens avec le projet DLL être incapable de trouver les fonctions correctement lorsque le projet EXE de test n'a aucun problème? J'utilise la bibliothèque de débogage multithread statique statique pré-compilée 32 bits que j'ai téléchargée de ClanLib.

Merci, Robert

Répondre

1

Après beaucoup d'expérimentation, j'ai trouvé la solution. Il s'avère que le problème était dû à une différence dans la convention d'appel utilisée par la DLL et les projets LIB (dans MSVC 2008, elle est définie dans Propriétés du projet, "Propriétés de configuration -> C/C++ -> Avancé". Le projet a été défini sur __stdcall et le fichier LIB était __cdecl Recompilation de LIBJPEG avec __stdcall Correction du problème