gpt4 book ai didi

c++ - 链接到 boost python 时出错

转载 作者:太空狗 更新时间:2023-10-29 20:57:50 24 4
gpt4 key购买 nike

这是我的简单 HelloWorld 程序

#include <boost/python.hpp>
using namespace boost::python;

void greet() {
// do nothing
}

BOOST_PYTHON_MODULE(HelloWorld)
{
def("greet", greet);
}

这是我的 CMakeLists.txt 文件

cmake_minimum_required(VERSION 2.8.4)
project(HW)

find_package(Boost COMPONENTS python3 REQUIRED)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories(${Boost_INCLUDE_DIRS} /Library/Frameworks/Python.framework/Versions/3.4/include/python3.4m include)

file(GLOB_RECURSE SRC
HelloWorld.cpp
)

add_library(HelloWorld SHARED ${SRC})
target_link_libraries(HelloWorld ${Boost_LIBRARIES})

但是,由于这个构建错误,我无法构建这个简单的程序

Undefined symbols for architecture x86_64:
"__Py_NoneStruct", referenced from:
boost::python::detail::none() in HelloWorld.cpp.o
boost::python::api::object::object() in HelloWorld.cpp.o
"boost::python::detail::init_module(PyModuleDef&, void (*)())", referenced from:
_PyInit_HelloWorld in HelloWorld.cpp.o
ld: symbol(s) not found for architecture x86_64

我错过了什么?抱歉,如果这看起来像一个新手问题,但我真的被卡住了。

最佳答案

我认为您缺少指向 Python 库的链接(与 Boost Python 库相对)

尝试像 find_package(Python) 然后 target_link_libraries(HelloWorld ${Python_LIBRARY})

此外(基于这篇文章 https://www.preney.ca/paul/archives/107)您正在构建的库的名称与 BOOST_PYTHON_MODULE 中给出的名称不匹配。将其更改为 BOOST_PYTHON_MODULE(libHelloWorld),因为 cmake 隐式地将 lib 添加到模块名称。

关于c++ - 链接到 boost python 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29227365/

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