python调用c写函数_从Python调用C函数

我使用了一个用

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编程的新手,所以我无法弄清楚问题出在哪里.有帮助吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值