我正在关注以下教程:https://en.wikibooks.org/wiki/Python_Programming/Extending_with_C我指的是标题为"使用Swig"的部分。我在他的位置创建文件:
~/Desktop/TEST2/helloMODULEtest
我首先使用此代码init:
创建一个名为hellomodule.c的文件/*hellomodule.c*/
#include <stdio.h>
void say_hello(const char* name) {
printf("Hello %s!\n", name);
}
然后我在同一位置创建文件hello.i:
/*hello.i*/
%module hello
extern void say_hello(const char* name);
我在Pi上安装了swig和python-dev。所以在终端输入这三行:
$ swig -python hello.i
$ gcc -fpic -c hellomodule.c hello_wrap.c -I/usr/include/python2.7/
$ gcc -shared hellomodule.o hello_wrap.o -o _hello.so -lpython2.7
给我这些文件:
然后sudo将hello.py和_hello.so复制到我的python2.7 lib文件中:
$ sudo cp ~/Desktop/TEST2/helloMODULEtest/hello.py /usr/lib/python2.7
$ sudo cp ~/Desktop/TEST2/helloMODULEtest/_hello.so /usr/lib/python2.7
完成这些步骤后,我可以使用Python 2.7.9 shell。在shell中输入
>>> import hello
并且不会收到警告或错误,表示已导入hello.py。但是,当我输入
时>>> hello.say_hello("World")
模块似乎什么也没有返回,然后转到下一行。这是&#34;对话框&#34;对于导入并使用下一个输入行调用hello:
>>> import hello
>>> hello.say_hello("World")
>>>
我想看到这个:
>>> import hello
>>> hello.say_hello("World")
Hello World!
>>>
所以,我的问题是为什么我的hello.py模块没有返回任何内容?
答案 0 :(得分:0)
将您的hello.i
文件更新为:
/*hello.i*/
%module hello
%{
void say_hello(const char* name);
%}
void say_hello(const char* name);