使用ctypes的printf中的分割错误

2024-03-29 10:08:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将我的一些python脚本连接到C函数,以提高python代码的性能。 我找到了ctypes模块,对于一些简单的例子来说它工作得很好,但是如果我在被调用的C函数中使用malloc或printf,它总是会产生“分段错误”。 我在我的机器上创建了一个导致问题的最小示例代码:

食品公司:

#include<stdio.h>

void foo(){
    printf("Hello World!");
}

在食品公司名称:

^{pr2}$

我仍然希望这只是我的一个愚蠢的错误,但是我已经几个小时没找到问题了。 如果有帮助的话,我在64位机器上使用windows,python2.7.13的anaconda distribution。我用来编译C文件的命令是:“gcc-shared-fPIC-ofoo.dllfoo.c”(它适用于一些小例子)。 谢谢你抽出时间。在

编辑: 我发现了另一个(可能)奇怪的行为。到目前为止,我只尝试在cygwin中运行python脚本。今天我用windows控制台试过了(命令提示符)并惊讶(和高兴)没有发生“分段错误”,但不幸的是,脚本停止在原来的位置,没有显示任何错误。 另外,下面的代码工作正常,所以pritnf一般来说似乎不是问题:

from ctypes import *
libc = cdll.msvcrt
libc.printf("Hello")

Tags: 函数代码脚本机器食品hellowindows错误