gpt4 book ai didi

c++ - cmake 链接 libboost_python-py32.so 而不是 libboost_python.so

转载 作者:太空狗 更新时间:2023-10-29 21:05:56 28 4
gpt4 key购买 nike

我正在尝试为我编写的库构建 python 绑定(bind),但我在让 cmake 理解它应该使用 python 3 的 boost-python 库时遇到了一些问题。

这是我的 cmake 文件:

cmake_minimum_required(VERSION 2.8)

FIND_PACKAGE(Boost COMPONENTS
system
thread
python REQUIRED)
find_package(PythonLibs REQUIRED)

INCLUDE_DIRECTORIES(${PYTHON_LIBRARIES})
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})

ADD_LIBRARY(
pschulze SHARED
src/candidate_relation.cpp
src/schulze.cpp
src/calculate.cpp
src/candidate.cpp
src/ranking.cpp
src/userinput.cpp
python.cpp)

TARGET_LINK_LIBRARIES(pschulze ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})

ADD_EXECUTABLE(
schulze
src/candidate_relation.cpp
src/schulze.cpp
src/calculate.cpp
src/candidate.cpp
src/ranking.cpp
src/userinput.cpp
src/json-spirit/json_spirit_reader.cpp
src/json-spirit/json_spirit_value.cpp
main.cpp)

TARGET_LINK_LIBRARIES(schulze ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})

ADD_DEFINITIONS(-std=gnu++0x -Os)

add_subdirectory (tests)

set(CMAKE_BUILD_TYPE Debug)

这是我得到的链接器错误:

Linking CXX executable schulze
CMakeFiles/schulze.dir/src/schulze.cpp.o: In function `arg_to_python':
/usr/include/boost/python/converter/builtin_converters.hpp:122: undefined reference to `PyInt_FromLong'
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libboost_python.so: undefined reference to `PyString_Size'

最佳答案

这可能会成功:

set(Python_ADDITIONAL_VERSIONS 3.2)

find_package(Boost COMPONENTS system thread python-py32 REQUIRED)

关于c++ - cmake 链接 libboost_python-py32.so 而不是 libboost_python.so,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15188760/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com