Python调用C函数遇WinError 193错误,求解决方案
解决Windows下Python调用C库出现的WinError 193错误
错误原因
你用gcc编译生成了Linux/macOS平台的.so共享库,但Windows系统仅支持.dll格式的动态链接库,这就是触发OSError: [WinError 193]的核心原因。
解决步骤
1. 重新编译C文件生成Windows兼容的动态链接库
替换原编译命令为Windows平台的编译指令:
gcc -shared -o func.dll func.c
说明:Windows下不需要
-fPIC参数(该参数是Linux平台生成位置无关代码用的),直接用-shared指定生成共享库,输出后缀改为.dll即可。
2. 修改Python代码中的库文件路径
将Python代码里的.so路径替换为新生成的.dll路径,同时建议显式声明函数参数和返回值类型避免调用异常:
import ctypes from ctypes import * # 替换为你的dll文件实际路径 clibrary = ctypes.CDLL(r"C:\Users\Desktop\func.dll") # 显式指定函数参数类型和返回值类型 clibrary.display.argtypes = [c_char_p, c_int] clibrary.display.restype = c_int clibrary.display(b"hi", 22)
3. 额外注意事项
- 确保Python和gcc的位数匹配:如果你的Python是64位,必须使用64位的MinGW gcc编译;若Python是32位,对应使用32位gcc,否则会出现位数不匹配的类似错误。
- 如果编译时提示头文件找不到,检查MinGW的环境变量是否配置正确,或者直接使用MinGW的完整路径执行编译命令。
内容的提问来源于stack exchange,提问作者user22872177
相关产品推荐
相关产品推荐

