用于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代码,这没有问题。
那么我的代码有什么问题?我该如何解决它呢?
答
在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
如果您删除printf调用,会发生什么情况? – 2501
@ 2501:通常返回233。 –