2009-10-16 8 views
0

J'ai un projet CMake C++ très simple (actuellement juste un main.cpp) que j'essaie de construire sur Mac OS X et Windows. Cela dépend de libgsasl, que j'ai compilé en tant que bibliothèque statique sur les deux plates-formes.CMake Visual Studio liant l'exécutable avec la bibliothèque statique

Mac OS X n'a ​​aucun problème à générer et Windows ne se plaint pas pendant la construction et produit un EXE. Lorsque j'essaie d'exécuter le fichier EXE sur Windows, il affiche un message d'erreur indiquant que l'application ne peut pas s'exécuter car elle ne trouve pas libgsasl.dll.

Je n'essaie même pas de lier à la bibliothèque dynamique, seulement la bibliothèque statique (la version .lib). Est-ce que je manque quelque chose? Dans Visual Studio, il semble que le fichier gsasl.lib soit trouvé et inclus dans la commande de liaison.

+0

Pouvez-vous publier la commande exacte utilisée par cl pour créer l'exe? –

+0

Pouvez-vous poster votre CMakeLists.txt? –

Répondre

1

Dans la chaîne d'outils MS, un fichier .lib peut être une bibliothèque statique ou une bibliothèque d'importation vers la DLL réelle.

Vous pouvez utiliser dumpbin pour voir à l'intérieur de la bibliothèque le type réel. Il existe plusieurs façons de gérer les détails, mais ma technique préférée consiste à utiliser l'option/summary. Une bibliothèque d'importation aura des sections .idata $ n (où n est un entier) tandis qu'une bibliothèque statique aura une section .text.

Questions connexes