【发布时间】:2018-12-04 21:07:06
【问题描述】:
我写了一个小例子来说明发生了什么。
my_test.cpp
#include <iostream>
#include <boost/python/numpy.hpp>
namespace np = boost::python::numpy;
int my_Foo()
{
Py_Initialize();
np::initialize();
std::cout << "hello\n";
return 0;
}
BOOST_PYTHON_MODULE(my_test)
{
using namespace boost::python;
def("my_Foo", my_Foo);
}
py_test.py
import my_test as t
t.my_Foo();
我全部用命令编译:
g++ -shared -fPIC -o my_test.so my_test.cpp -lboost_python -lpython2.7 -I/usr/include/python2.7
我得到这个错误:
ImportError: /home/my_test.so: undefined symbol: _ZN5boost6python5numpy10initializeEb
当我评论这一行时它会起作用
//np::initialize();
我不知道如何解决它。我在论坛上读过类似的问题,但没有一个解决方案对我有帮助。我尝试了更新 boost、更新 python、链接库、在编译期间将生成的模块放在其他模块之前 - 没有任何帮助。如有任何帮助,我将不胜感激。
【问题讨论】:
标签: python c++ numpy boost undefined-symbol