2016-06-21 1 views
0

J'essaye d'employer Poco comme bibliothèque statique avec l'exécution dynamique dans mon projet. J'ai téléchargé les sources complètes de Poco 1.7.3 et j'ai utilisé le script buildwin.bat pour compiler les bibliothèques en utilisant ma bibliothèque partagée OpenSSL 1.0.2h auto-compilée (c'est-à-dire ajusté le chemin en buildwin.bat).Poco comme bibliothèque statique avec l'exécution dynamique nécessite l'importation de bibliothèque de DLL?

Produire PocoXYZmd.lib via buildwin.bat 140 build static_md debug Win32 nosamples notests msbuild fonctionne très bien.

Cependant, lorsque j'essaie de lier PocoXYZmd.lib dans mon propre projet, l'éditeur de liens recherche PocoXYZ.lib, la bibliothèque d'importation pour PocoXYZ.dll.

Construire Poco avec shared et fournir les bibliothèques d'importation PocoXYZ.lib dans le chemin de recherche de l'éditeur de liens, j'obtiens des erreurs sur les symboles Poco étant déjà définis (évidemment).

Ai-je raté quelque chose de crucial ou est-ce un bug dans le script de construction de Poco?


J'ai configuré Poco pour construire uniquement les composants suivants: Fondation, XML, JSON, Util, Net, Crypto, NetSSL_OpenSSL.

En outre, je devais régler le V140 vcxproj -files de Crypto et NetSSL_OpenSSL à un lien vers libeay32.lib et ssleay32.lib (les bibliothèques d'importation pour les DLL OpenSSL) au lieu de libeay32md.lib et ssleay32md.lib (aucune idée d'où ceux-ci pourraient provenir en fonction de les scripts de construction OpenSSL 1.0.2h). J'utilise Visual Studio 2015 Update 2 sur Windows 7, en faisant tout dans l'invite de développeur Visual Studio 32 bits.

Répondre

1

Après re-lecture de la documentation Poco, j'ai finalement trouvé la solution:

Lorsque vous utilisez Poco statiquement sous Windows, il faut spécifier POCO_STATIC lors de la compilation de la bibliothèque/application à l'aide Poco, sinon plusieurs #pragma comment directives dans les en-têtes de Poco seront forcer en silence la liaison à la version DLL de Poco.

http://pocoproject.org/docs/99150-WindowsPlatformNotes.html

Merci, RTFM.