gpt4 book ai didi

python - 尝试使用 swig 将 c++ 库包装到 Python 时,体系结构 x86_64 的 undefined symbol

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:15:25 25 4
gpt4 key购买 nike

我正在尝试使用 swig 在 Python 中包装一个 c++ 类。我使用 swig 编译了类并生成了 .o 文件和 wrap 文件,但是现在当我尝试从这些文件创建库时,出现以下错误。

$g++ -lpython -dynamiclib vertex.o vertex_wrap.o -o _vertex.so
Undefined symbols for architecture x86_64:
"Cell::removeVertex(Vertex*)", referenced from:
Vertex::kill(Vertex*) in vertex.o
Vertex::~Vertex() in vertex.o
Vertex::~Vertex() in vertex.o
"Cell::addVertex(Vertex*)", referenced from:
Vertex::make(Cell*) in vertex.o
Vertex::Vertex(Cell*) in vertex.o
Vertex::Vertex(Cell*) in vertex.o
ld: symbol(s) not found for architecture x86_64

最佳答案

Vertex 调用 Cell(Vertex 可能通常包含在 Cell 中),即 Cell::removeVertex(Vertex*)Cell::addVertex(Vertex*)。这些函数必须在其他一些源文件中定义(也许是 cell.cpp,只是猜测)。

因此您需要编译源文件 cell.cpp 并链接 cell.o (如果有更多依赖项,可能还有其他源文件)

顺便说一句,这与 SWIG 或 python 包装无关。

关于python - 尝试使用 swig 将 c++ 库包装到 Python 时,体系结构 x86_64 的 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34291057/

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