Ich habe Probleme beim Binden gegen Boost Python.Verlinkung gegen Boost Python 3.6. kann boost_python statt boost_python3 nicht finden
ich Visual Studio 2017 verwenden und das Boost-1_64-Paket mit der folgenden Befehlszeile kompiliere:
b2 -a toolset=msvc-14.1 --build_type=complete stage variant=debugthreading=multi link=shared runtime-link=shared define=_ITERATOR_DEBUG_LEVEL=0 address-model=64
Mit dieser User-config.jam:
using python
: 3.6 # Version
: C:\\Python36\\python.exe # Python Path
: C:\\Python36\\include # include path
: C:\\Python36\\libs # lib path(s)
: <define>BOOST_ALL_NO_LIB=1
;
Aber während meines C++ Projekt Bau mit Laufzeitbibliothek: Multi-threaded DLL (/ MD) Ich bekomme immer diese Fehlermeldung:
aber die Boost-Libs I enthalten folgende boost_python Dateien kompiliert:
boost_python3-vc141-mt-gd-1_64.dll
boost_python3-vc141-mt-gd-1_64.lib
Hat jemand Erfahrung mit Boost für Python 3? Nach stundenlangem Versuch kann ich keine gute Lösung finden. Btw .: umbenennen der Dateien zu boost_python- (Entfernen der 3) funktioniert gut. Aber ich glaube nicht, dass dies der richtige Weg
VC Projekteinstellungen ist:
Hinzufügen. Verzeichnisse einschließen:
C:\Python36\include;D:\ws\boost_1_64_0\boost_1_64_0;
Hinzufügen. libary Verzeichnisse:
D:\ws\boost_1_64_0\boost_1_64_0\stage\lib;C:\Python36\libs;
Geschlossen: Die Autolink-Funktion der Verstärkung nicht funktioniert richtig mit Python 3. Die boost_module_name Makro wurde eingestellt und die erzeugten Libs enthielt die 3.
boost_python (die 3 fehlt)-> Deaktivierte automatische Verbindung und fügte die erforderlichen Bibliotheken manuell hinzu.
Lösung a) Go/Python/detail/config.hpp zu steigern und BOOST_LIB_NAMe ändern statt boost_python boost_python3.
oder
Lösung b) Drehen Auto Verknüpfung von durch BOOST_ALL_NO_LIB definieren und dann explizit boost_python3 ... lib als Linker Abhängigkeit.
Was die Build-Befehle sind für Ihr C++ Projekt? Verwenden Sie etwas wie 'distutils.extension'? – Walter
Ich verwende keine speziellen Erweiterungen oder Einstellungen. Alles was ich getan habe, war ein C++ 32 Konsolenanwendungsprojekt zu erstellen und die Code-Generierung in DLL zu ändern. Und hinzugefügt die erforderlichen Pfade enthalten natürlich –
Bitte geben Sie genügend Informationen. Wie ist Ihr C++ Code zusammengestellt und insbesondere verlinkt? Gib den vollen Befehl. Wenn das nicht klappt, können wir Ihnen nicht wirklich helfen, fürchte ich. – Walter