gpt4 book ai didi

python - 将 Boost.Python 与 g++ 的问题联系起来

转载 作者:行者123 更新时间:2023-11-30 05:11:05 24 4
gpt4 key购买 nike

我正在编写一个围绕 C++ 函数的包装器以在 Python 中使用。因此,我首先尝试使用 Boost.Python 作为实验。以下是我要包装的功能:

你好_exp.cpp:

char const* greet()
{
return "hello, world!";
}

#include <boost/python.hpp>

BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}

我的生成文件:

COMPILER = g++
CPPFLAGS = -g -Wall -std=c++11 -stdlib=libc++

# Python and BoostPython links.
BOOSTHEADERS = -I/usr/local/Cellar/boost/1.64.0_1/include/boost/
BOOSTLIBRARIES = -L/usr/local/Cellar/boost-python/1.64.0/lib/
BOOSTLIB = -lboost_python

PYTHONHEADERS = -I/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/include/python3.6m
PYTHONLIBRARIES = -L/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib
PYTHONLIB = -lpython3.6

# Collect links.
LIBRARIES = $(BOOSTLIBRARIES) $(PYTHONLIBRARIES) $(PYTHONLIB) $(BOOSTLIB)
HEADERS = $(BOOSTHEADERS) $(PYTHONHEADERS)

# Build target.
TARGET = hello_ext


# BEGIN MAKE
all: $(TARGET)

$(TARGET): $(TARGET).cpp
$(COMPILER) -shared $(TARGET).cpp $(LIBRARIES) $(HEADERS) -o $(TARGET).so

clean:
$(RM) $(TARGET)

但是,经过一些实验后,我一直陷入这个错误......:

Undefined symbols for architecture x86_64:
"boost::python::detail::init_module(PyModuleDef&, void (*)())", referenced from:
_PyInit_hello_ext in hello_ext-476eb2.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [hello_ext.so] Error 1

所以我通过 HomeBrew 安装了 python3,还有 boost 和 boost-python。请注意,我实际上安装了 boost-python 库,不支持 python2,只支持 python3。

提前致谢!

最佳答案

经过一些修复和挖掘,发现问题是我安装的 boost-python 库仍在 python2 中。所以,请确保你这样做了

brew rm boost-python
brew install boost-python --with-python3 --without-python

获取正确的版本。然后 make 文件只是改变

BOOSTLIB = -lboost_python

BOOSTLIB = -lboost_python3

然后点击 make :)

关于python - 将 Boost.Python 与 g++ 的问题联系起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45284845/

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