我有一個非常簡單的example.c:double My_variable = 3.0;還有一個example_python.i:%module example%{extern double My_variable;%}然后我運(yùn)行:swig -python example_python.igcc -o example.o -c -fPIC example.cgcc -o example_python.o -c -I/usr/include/python2.7 -fPIC example_python_wrap.cgcc -o libpython_lib.so -shared example.o example_python.os好的,我運(yùn)行python:>>> import libpython_libTraceback (most recent call last): File "<stdin>", line 1, in <module>ImportError: dynamic module does not define init function (initlibpython_lib)>>>那么我在這里錯過了什么嗎?如何解決這個問題?我正在使用 SWIG 版本 3.0.12 和 ubuntu gcc 版本 7.3.0。非常感謝。
1 回答

千萬里不及你
TA貢獻(xiàn)1784條經(jīng)驗 獲得超9個贊
在您的 example_python.i 文件中,您需要模塊名稱與導(dǎo)入模塊的名稱相匹配。
Swig 將從模塊名稱生成 init 函數(shù)。因此,您應(yīng)該能夠通過將 example_python.i 更改為:
%module libpython_lib
%{
extern double My_variable;
%}
所以當(dāng)你導(dǎo)入 libpython_lib 時,它會找到模塊。您也可以將導(dǎo)入和共享庫更改為名為“example”的替代解決方案。
添加回答
舉報
0/150
提交
取消