I have problems linking against boost python.
I am using Visual Studio 2017 and compiled the boost 1_64 package with the following command line:
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
with this 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
;
But while building my c++ project with runtime libary: Multi-threaded DLL (/MD) I keep getting this error message:
Error LNK1104 cannot open file 'boost_python-vc141-mt-gd-1_64.lib'
but the boost libs I compiled contain the following boost_python files:
boost_python3-vc141-mt-gd-1_64.dll
boost_python3-vc141-mt-gd-1_64.lib
Does someone have experience with boost for python 3? After hours of trying, I can't find a good solution. Btw.: renaming the files to boost_python- (removing the 3) works fine. But I don't think that this is the correct way
VC Project settings:
Add. include directories:
C:\Python36\include;D:\ws\boost_1_64_0\boost_1_64_0;
Add. libary directories:
D:\ws\boost_1_64_0\boost_1_64_0\stage\lib;C:\Python36\libs;
Closed: The autolink feature of boost did not work correctly with python 3. The boost_module_name macro was set to boost_python (missing the 3) and the generated libs contained the 3.
--> Turned auto link off and added the required libs manually.
Solution a) Go to boost/python/detail/config.hpp and change BOOST_LIB_NAMe to boost_python3 instead of boost_python.
or
Solution b) Turn auto Linkage of by defining BOOST_ALL_NO_LIB and then explicitly set boost_python3...lib as linker dependency.