我使用了一个用
Python编写的服务器文件来构建我的Raspberry Pi和我的iPhone之间的连接.我写了一个简单的C程序,帮助翻译莫尔斯代码.我想从Python服务器程序中调用C程序中的translate()函数.
我在网上找到了一个教程并按照其说明编写了我的C程序并编辑了netio_server.py文件
在我的C程序morseCodeTrans.c中它就像
#include
#include
static PyObject* py_translate(PyObject* self, PyObject* args)
{
char *letter;
PyArg_ParseTuple(args, "s", &letter);
if(strcmp(letter, ".-") == 0)
return Py_BuildValue("c", 'A');
else if(strcmp(letter, "-...") == 0)
return Py_BuildValue("c", 'B');
...
}
static PyMethodDef morseCodeTrans_methods[] = {
{"translate", py_translate, METH_VARARGS},
{NULL, NULL}
};
void initmorseCodeTrans()
{
(void)Py_InitModule("morseCodeTrans", morseCodeTrans_methods);
}
在服务器文件netio_server.py中它就像:
# other imports
import morseCodeTrans
...
tempLetter = ''
if line == 'short':
tempLetter += '.'
elif line == 'long':
tempLetter += '-'
elif line == 'shortPause':
l = morseCodeTrans.translate(tempLetter)
print "The letter is", l
以上是我称之为C translate()函数的唯一地方
然后我尝试编译morseCodeTrans.c文件,如下所示:
gcc -shared -I/usr/include/python2.7/ -lpython2.7 -o myModule.so myModule.c
编译成功了.
但是当我运行Python服务器程序时,无论何时它到达该行
l = morseCodeTrans.translate(tempLetter)
服务器程序刚刚终止,没有任何错误消息.
我是Python编程的新手,所以我无法弄清楚问题出在哪里.有帮助吗?