2014-04-18 55 views
1
將C++到Python錯誤

我通過BoostPython庫暴露一個簡單的C++代碼的Python:從BoostPython

#include <boost/python/detail/wrap_python.hpp> 
#include <boost/python.hpp> 

using namespace boost::python; 

bool test_api(void){ 
    return true; 
}; 

BOOST_PYTHON_MODULE(materials) { 

    def("test_api", test_api); 

} 

後,我嘗試導入該模塊,Python解釋器返回錯誤:

ImportError: ./example.so: undefined symbol: _Py_RefTotal 

我已經將該模塊靜態鏈接到boost python庫,並且Python動態庫libpython3.2m.so和libpython3.2m.so.1.0存在於工作目錄中。

關於在哪裏可以找到丟失符號的任何建議?

+0

嘗試包括'#include '你需要這個包含模塊定義。 –

+0

不行。它仍然缺少符號。我注意到libboost_python.a和libboost_python.so – KlingonJoe

+1

中的符號是未定義的這裏是這樣的:http://stackoverflow.com/a/19894643/2050745 –

回答

0

Boost庫與Python安裝不一致。

cd boost_source 
./bootstrap.sh --with-libraries=python --prefix=../boost_target 

配置加速至指向正確的Python安裝:

vim tools/build/v2/user-config.jam 

編輯指向Python的行:

using python : version_number 
      : path_to_python_executable 
      : path_to_python_include_directory 
      : path_to_python_library_directory 

然後,運行構建系統:

./b2