我有一个要从 Python 调用的 C++ 函数。该函数本身非常简单,但它涉及只能在 C++ 中完成的 IPC 调用。要编译该 C++ 代码需要链接大量其他库。我正在尝试为此使用 SWIG。我有一个看起来像这样的 Makefile:
all: swig object shared
object: swig
${CC} -c ${MODULE}_wrap.cxx ${INCLUDES}
shared:
${CC} -Wl,--verbose -shared ${MODULE}_wrap.o -o _${MODULE}.so
swig:
${SWIG} -c++ -python ${MODULE}.i
有了这个,一切都编译得很好,但是在 Python 中导入我的模块会给我“未定义的符号”错误。如果我将shared
行更改为:
shared:
${CC} -Wl,--verbose -shared ${MODULE}_wrap.o -o _${MODULE}.so ${LIBS}
它无法编译,collect2: ld returned 1 exit status
但没有准确地告诉我错误是什么。详细的链接器输出有很多行说“尝试打开 [某些库] 失败”,但其中一些行说“成功”。难道只是那些说失败的人阻止了链接的发生吗?使用 SWIG 模块,我正在尝试做的事情是否可行?