【发布时间】:2013-12-15 03:06:31
【问题描述】:
我有一个 .cpp 文件,其中包含来自两个子目录(子文件夹 linoise 和 noiseutils)的文件。 我正在尝试将 c++ 类公开给 python(我尝试了 World 示例,但是当我尝试这个更复杂的任务时,我得到了错误)。我正在使用 CMakeLists.txt 来编译和创建 .so 文件。 它工作正常,它创建了三个 .so 库(一个在工作目录中,一个在 noiseutils 中,一个在 libnoise 中)。
当我尝试时
import map
它得到错误map.so: undefined symbol: _ZTIN5noise6module6ModuleE
project (map)
cmake_minimum_required(VERSION 2.8)
find_package(PythonLibs)
include_directories (${PYTHON_INCLUDE_DIRS})
find_package(Boost 1.45.0 COMPONENTS python)
include_directories (${Boost_INCLUDE_DIRS})
set (LIBNOISE_PATH ${MY_SOURCE_DIR}/libnoise)
set (LIBNOISEUTILS_PATH ${MY_SOURCE_DIR}/noiseutils)
add_subdirectory(libnoise)
add_subdirectory(noiseutils)
add_library (
map SHARED
Wrapped.cpp
)
target_link_libraries (
map
boost_python
${PYTHON_LIBRARIES}
${Boost_LIBRARIES}
)
我需要以某种方式连接所有三个 .so 库还是它已经在工作目录的一个文件中? (它生成Make文件,编译并生成.so文件,我试图从名称中删除lib以与包装文件中的相同但它仍然抛出错误)
【问题讨论】:
标签: c++ python cmake boost-python