C++ 将SWIG与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++ swig-c++-python swig_TEST.i g++-c-fPIC SWIG_TEST.cpp SWIG_TEST_wrap.cxx-I/usr/include/python2.4/ gcc—共享SWIG_TEST.o SWIG_TEST_wrap.o-o_SWIG_TEST.so-lstdc++ 完成后,我收到以下错误消息 ImportError: ./_SWIG_TEST.so: undefined symbol: Py_InitModule4 ImportError:./\u SWIG\u TEST.so:未定义符号:Py\u InitModule4C++ 将SWIG与C++;,c++,python,swig,C++,Python,Swig,大家好 我尝试使用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++ swig-c++-pyt
您知道它是什么吗?您可以尝试使用
gcc
g++ -shared SWIG_TEST.o SWIG_TEST_wrap.o -o _SWIG_TEST.so
而不是直接使用
ld
。看起来您没有链接到Python运行库。类似于将-lpython24
添加到gcc行。(我现在手头没有Linux系统)。正如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配置
并不完美;它有时会给你额外的东西,或者冲突的东西。但这肯定会有很大帮助