[英]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.