Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Windows与Windows中的Boost numpy链接器错误_Python_Visual Studio_Numpy_Boost - Fatal编程技术网

Python Windows与Windows中的Boost numpy链接器错误

Python Windows与Windows中的Boost numpy链接器错误,python,visual-studio,numpy,boost,Python,Visual Studio,Numpy,Boost,我正在使用Boost1.64和VisualStudio为python创建一个模块。具体来说,我使用boostnumpy模块来处理模块中的Numpy阵列 我使用以下命令编译了Boost: b2 -j8 address-model=32 --user-config=D:\code\libraries\boost_1_64_0\user-config.jam --with-python --build-type=complete stage --stagedir=stage/win32 在我

我正在使用Boost1.64和VisualStudio为python创建一个模块。具体来说,我使用boostnumpy模块来处理模块中的Numpy阵列

我使用以下命令编译了Boost:

b2 -j8  address-model=32  --user-config=D:\code\libraries\boost_1_64_0\user-config.jam --with-python   --build-type=complete stage --stagedir=stage/win32
在我的代码中,我添加了静态链接defines(我读过的所有文章似乎都需要它):#define BOOST_PYTHON_static_LIB

编译代码时会发生两件奇怪的事情:

1) 使用diagnostics define(#define BOOST_LIB_diagnostics)时,它显示编译器链接到python库的静态版本,但链接到numpy库的动态版本:

  • 链接到lib文件:libboost_python-vc141-mt-1_64.lib
  • 链接到lib文件:boost_numpy-vc141-mt-1_64.lib
当我禁用自动链接并自己添加正确的库时,我最终得到一个未解决的链接器错误:

error LNK2001: unresolved external symbol "class boost::python::numpy::dtype __cdecl boost::python::numpy::detail::get_float_dtype<32>(void)" (??$get_float_dtype@$0CA@@detail@numpy@python@boost@@YA?AVdtype@123@XZ)
错误LNK2001:未解析的外部符号“class boost::python::numpy::dtype\uu cdecl boost::python::numpy::detail::get\u float\u dtype(void)”(?$get\u float\u dtype@$0CA@@detail@numpy@python@boost@@是吗?AVdtype@123@XZ)
奇怪的是,这个错误只在numpy中使用使用模板的函数时抛出!我实际上可以运行使用boost_numpy库但不使用模板函数的代码,它将链接并运行良好! 有人知道为什么基于模板的函数会抛出这个链接器错误吗? 非常感谢您的帮助


H

我通过添加以下内容修复了链接器错误:

#define BOOST_NUMPY_STATIC_LIB
因此,我现在的序言是:

  • #定义BOOST\u PYTHON\u STATIC\u LIB
  • #定义BOOST\u NUMPY\u STATIC\u LIB
  • 错误消失了


    谢谢你,你为我节省了不少时间。