【发布时间】:2018-10-06 01:36:11
【问题描述】:
我正在尝试在带有 SWIG 的 python 脚本中使用 .c 程序。首先,我安装了 SWIG 并尝试了教程 swig webpage 中的简单示例。
我正在将 Raspberry Pi 与 Raspbian GNU/Linux 9.4(拉伸)一起使用
这就是我所做的:
1. swig -python example.i - 太好了,这创建了两个新文件:“example.py”和“example_wrap.c”
2. gcc -fpic -I/usr/include/python2.7 -c example_wrap.c - 这将创建“example_wrap.o”文件
3. 在Geany中编译example.c;这给出了“example.o”文件
4. gcc -shared example.o example_wrap.o -o example.so - 现在创建了一个新文件“example.so”。
是时候试试了:
python
我在这里使用 Python 2.7.13
>>>import example
这给出了回溯:
File "<stdin>", line 1, in <module>
ImportError: dynamic module does not define init function (initexample)
如何解决这个问题?
【问题讨论】:
-
gcc -shared example.o example_wrap.o -o _example.so. -
@CrisFati 您的解决方案部分工作:当我在 python 解释器中执行“导入示例”时,它不会提供回溯,但稍后执行例如 fract(4) 会显示:'NameError: name 'fact ' 没有定义。'无论如何,当我以这种方式启动 python 时:'python -i example.py' 我不必导入任何东西,事实(4)给出了 24 的正确答案。现在有什么问题?
-
example.fact(4)(DOT not SPACE)。名字是fact(你的评论还提到了fract)。 -
太棒了!你可以让它成为一个答案。也有第二条评论。这对这个主题很重要。