簡體   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