2010-04-27 5 views

Répondre

1

Les exemples spécifiques que vous donnez sont des DLL qui sont généralement liées via des manifestes et côte à côte, au moins lors de la création d'applications (avec les paramètres de projet corrects) à partir de Visual Studio. Pourquoi essayez-vous d'ordonner au compilateur de les lier par code?

La façon la plus souvent utilisée pour créer un lien vers une DLL particulière est quand vous avez la lib pour la DLL disponible, puis d'utiliser le pragma

#pragma comment(lib, "<library name>") 
+0

Pouvez-vous élaborer comment le manifeste est-il composé? – user198729

0

hein, vous voulez sûrement abord comprendre DLL/reliant ... http://www.infernodevelopment.com/how-create-dll-c-using-run-time-dynamic-linking

la question écrite n'est pas responsable

Remarque: ne sais pas ce que vous entendez Cmake, mais vous pouvez facilement spécifier des bibliothèques de liens dans votre fichier CMakeLists.txt ... l'exception du DLLs vous remarquez, parce qu'ils ont un re dépend de la plateforme. Vous auriez besoin de quelque chose dans le script CMake pour vérifier les versions de MSVC. Pourquoi voudriez-vous faire un lien vers une version plus ancienne, Vista et versions ultérieures avec l'exécution VC9, et si quelqu'un utilise XP, vous pouvez simplement lui donner le 'paquet redistribuable' pour VS2008/2010 ..

+0

En outre, pouvez-vous expliquer comment faire de 'cmake' utiliser le 'paquet redistribuable' pour VS2008/2010? – user198729

+0

Cmake par lui-même n'aurait pas besoin du paquet redistribuable lorsque vous construisez, mais vous pourriez avoir CMake utiliser un outil externe comme 'système d'installation de script nullsoft' pour former un installateur pour un utilisateur. Exemple: recherchez 'opencv', téléchargez le programme d'installation et la source ... vous pouvez essayer de recréer le programme d'installation avec cmake + source. –

1

Vous spécifiez un fichier .lib lorsque vous liez, et le .dll correspondant sera utilisé lors de l'exécution, donc (par exemple) si vous souhaitez utiliser msvcr70.dll, vous voudrez lier avec msvcr70. lib.

1

En général, l'exécution C/C++ avec laquelle vous liez dépend de la version de VisualStudio que vous utilisez. (msvcr80.dll -> VS2005, msvcr90.dll -> VS2008 etc.)

Un peu plus de perspicacité sur la façon dont cela fonctionne et quelques astuces pour travailler ce que vous pouvez lire dans ce blog post.

Questions connexes