繁体   English   中英

在C ++中使用SWIG

[英]using SWIG with C++

大家好

我正在尝试使用SWIG将C ++代码导出到Python。 我在网站上阅读的C示例确实可以工作,但是我对C ++代码有疑问。

这是我打的电话

swig -c++ -python SWIG_TEST.i
g++ -c -fPIC SWIG_TEST.cpp SWIG_TEST_wrap.cxx -I/usr/include/python2.4/
gcc --shared SWIG_TEST.o SWIG_TEST_wrap.o -o _SWIG_TEST.so -lstdc++

完成后,我会收到以下错误消息

ImportError: ./_SWIG_TEST.so: undefined symbol: Py_InitModule4

你知道这是什么吗?

看来您没有链接到Python运行时库。 类似于在您的gcc行中添加-lpython24 (目前我没有Linux系统)。

您可以尝试使用gcc构建共享库

g++ -shared SWIG_TEST.o SWIG_TEST_wrap.o -o _SWIG_TEST.so

而不是直接使用ld

正如Mark所说,链接到python库是一个问题。 可以通过运行python-config --ldflags获得有关成功链接所需标志的提示的好方法。 实际上,编译测试的一种特别轻松的方法如下:

swig -c++ -python SWIG_TEST.i
g++ -c `python-config --cflags` -fPIC SWIG_TEST.cpp SWIG_TEST_wrap.cxx
gcc --shared `python-config --ldflags` SWIG_TEST.o SWIG_TEST_wrap.o -o _SWIG_TEST.so -lstdc++

请注意, python-config并不完美。 它有时会给您额外的东西,或者是冲突的东西。 但这肯定会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM