У меня есть небольшая программа cpp:
#include <iostream>
#include <boost/python.hpp>
//#include <boost/python/numpy.hpp>
void helloxd(){
std::cout<<std::endl<<"something"<<std::endl;
}
BOOST_PYTHON_MODULE(tkbd_cpp)
{
using namespace boost::python;
def("helloxd_cpp", helloxd);
}
Я использую cmake, чтобы скомпилировать ее для запуска в качестве библиотеки python 3.Я использую этот CMakeLists.txt
cmake_minimum_required( VERSION 3.5 )
project( tkbd_cpp )
set(CMAKE_CXX_FLAGS "-Wl,--no-undefined")
set(BOOST_ROOT /usr/boost)
set(PYTHON_LIBRARY /usr/lib/python3.5 )
set(PYTHON_INCLUDE_DIR /usr/include/python3.5m )
find_package(PythonInterp 3.5 REQUIRED)
find_package(PythonLibs 3.5 REQUIRED)
find_package(Boost 1.54 REQUIRED COMPONENTS system python)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS} )
ADD_LIBRARY(tkbd_cpp SHARED py_wrapper.cpp)
TARGET_LINK_LIBRARIES(tkbd_cpp ${Boost_LIBRARIES} ${PythonLibs_LIBRARIES})
set_target_properties( tkbd_cpp PROPERTIES PREFIX "" )
Я могу успешно запустить cmake., Но когда я пытаюсь запустить команду make, я получаю
CMakeFiles/tkbd_cpp.dir/py_wrapper.cpp.o: In function `PyInit_tkbd_cpp':
py_wrapper.cpp:(.text+0xcf): undefined reference to `boost::python::detail::init_module(PyModuleDef&, void (*)())'
CMakeFiles/tkbd_cpp.dir/py_wrapper.cpp.o: In function `boost::python::detail::none()':
py_wrapper.cpp:(.text._ZN5boost6python6detail4none
Я несколько раз пытался переустановить boost, с несколькимиметоды с аргументом --with-python = python3.5m, ручная компиляция с g ++, запуск примера из https://github.com/TNG/boost-python-examples и каждый раз, когда я получаю неопределенную ссылку.Я использую Linux, и Python по умолчанию - Python 3.5.Я прочитал все ответы, связанные с boost-python о переполнении стека, и ни один из них мне не помог.Что еще я мог попробовать?