使用ctypes从Python调用C函数:使用指针的错误

时间:2015-08-29 15:06:32

标签: python ctypes

我在Windows 8上使用ctypes从Python 3.4脚本调用C函数。我使用cygwin gcc创建了一个DLL。只要我只使用参数和局部变量,C函数就可以正常工作,但是函数中定义的指针的任何引用都会失败(没有错误消息或核心文件,只是一个静默程序崩溃)。例如,以下操作失败:

CALC_Z_SER_DLL int calc_z_ser(struct complex_num *q, int *output,
                              int len_q, int maxiter) {
    int *malloctest = malloc(sizeof(int));
    *malloctest = 42;  /* crashes here */

但是,我可以使用指针访问数组参数,没有问题。

我需要在Windows DLL中使用特殊指针类型吗?或者在构建DLL时我需要使用一些特定于Windows的选项?在C函数的头文件中,我使用了这个声明:

#ifdef BUILDING_CALC_Z_SER_DLL
#define CALC_Z_SER_DLL __declspec(dllexport)
#else
#define CALC_Z_SER_DLL __declspec(dllimport)
#endif

int CALC_Z_SER_DLL calc_z_ser(struct complex_num *q, int *output,
                              int len_q, int maxiter);

0 个答案:

没有答案