用于Windows的Python在调用MinGW-w64编译函数库时挂起

问题描述:

我正在使用ctypes函数调用MinGW-w64编译函数库。用于Windows的Python在调用MinGW-w64编译函数库时挂起

C代码:

#include <stdio.h> 

int hello() 
{ 
    printf("Hello world!\n"); 
    return 233; 
} 

Python代码:在MinGW的-W64

from ctypes import * 
lib = CDLL("a.dll") 
hello = lib.hello 
hello.restype = c_int 
hello() 

编译C代码用gcc:

gcc tdll.c -shared -o a.dll 

然后在Python运行Python代码为Windows 3.5 .2,python挂在你好()与100%的CPU使用率。
然后我试着在Python中为MinGW 3.4.3(从msys2回购安装)运行Python代码,这没有问题。

那么我的代码有什么问题?我该如何解决它呢?

+1

如果您删除printf调用,会发生什么情况? – 2501

+0

@ 2501:通常返回233。 –

在msys中使用'x86_64-w64-mingw32-gcc'或'i686-w64-mingw32-gcc'而不是'gcc'!

'gcc'命令调用x86_64-pc-msys-gcc。

+1

当你在MINGW32或MINGW64 shell中时,'gcc'命令将调用'i686-w64-mingw32-gcc'或'x86_64-w64-mingw32-gcc'。 当然,它必须先安装。 – mati865