2017-07-14 2 views
0

Heute morgen habe ich Python 3.6 installiert, habe meine b2 config kompiliert die Boost-Lib und habe beide Varianten von libboost_python3... in der lib Pfad. Dann mit einem einfachen:VS LINK kann die Datei 'boost_python ...' nicht öffnen libboost_python3-vc140-mt-gd-1_65

#include "stdafx.h" 
#include <boost/python.hpp> 

char const* greet() 
{ 
    return "hello, world"; 
} 

BOOST_PYTHON_MODULE(hello_ext) 
{ 
    using namespace boost::python; 
    def("greet", greet); 
} 

ich einen Linker Fehler:

LINK : fatal error LNK1104: cannot open file 'boost_python-vc140-mt-gd-1_63.lib' 

ich für etwas wie eine Fahne wie USING_BOOST_PYTHON3 gesucht habe, aber alles, was ich lese, sagt, dass es automatisch sein sollte. Dieser Boost sollte die richtige Lib enthalten, je nachdem, was ich gebaut habe.

This guy Hatte das gleiche Problem, aber bekam nie eine Antwort. Das war so nah wie möglich an den Links in "Ähnliche Fragen" auf der rechten Seite. Aber ich kann nicht sehen, wie VS Teil davon ist, da Boost die Bibliotheken auswählen wird.

Update: ich gerade gefunden:

#if PY_MAJOR_VERSION == 2 
# define BOOST_LIB_NAME boost_python 
#elif PY_MAJOR_VERSION == 3 
# define BOOST_LIB_NAME boost_python3 
#endif 

So, jetzt sieht es so aus, warum ist meine Hauptversion 2 statt 3? Und selbst wenn ich:

#define PY_MAJOR_VERSION 3 

Direkt an der Spitze meines stdafx.h es verbindet immer noch mit dem Python 2 lib. !?

Noch ein weiteres Update: So früh, und ich habe nicht Python 2.7 ‚installiert‘, habe ich die zusätzliche Bibliotheken zu C:\cpp\Python27\libs gesetzt hatte ich es nur auf C:\cpp\Python36_3\libs gesetzt und jetzt erhalte ich:

LINK : fatal error LNK1104: cannot open file 'python27.lib' 

macht Sinn, da Schub versucht, statt 3.x

Antwort

0

auf 2.x zu verbinden Während ich dies alles in meinem Kopf habe ........

Boost-Kontrollen mit dem, was python Pfad einbeziehen, den Sie verwenden. Und warum nicht, weil Sie vielleicht mit 2.7 oder 3.6 arbeiten möchten. Also muss das Python-Include in Additional Include Directories gesetzt werden. Ich hatte meinen auf 2,7 eingestellt und hatte vergessen, mein Schlechter. Ich fand heraus, dass Python definiert ist.

Ich hatte immer noch Verknüpfungsprobleme, ich wollte nur für jetzt statische verknüpfen, aber Boost Python will force dynamic linking of boost, regardless of user options. Aber dieser Post behebt es.

Dann hatte ich noch keine libboost_python3-vc140-mt-sgd-1_65.lib und ich hatte gerade eine b2 .. --build-type=complete install getan, um sicher zu sein. Ich hatte immer noch die Konsole geöffnet, also habe ich die Liste nachgeschlagen und boost python-s wurde gebaut! Aus welchem ​​Grund auch immer, b2 hat einen Ordner erstellt, C:\Boost\lib, nur für die statisch verknüpften Python-Bibliotheken. Alle anderen libs gelandet in C:\cpp\boost_1_65_0\stage\lib

Was für ein Abenteuer das war!

Verwandte Themen