Windows下用ctypes加载C++库遇WinError193错误求助
问题分析与解决
核心原因
你遇到的OSError: [WinError 193]错误,本质是Windows系统无法识别Linux/macOS格式的共享库文件:
.so是类Unix系统(Linux、macOS)的动态共享库后缀,Windows平台对应的动态链接库后缀是.dll- 你使用的编译命令
g++ -fPIC -shared -o main00.so main00.cpp是针对类Unix系统的,生成的文件不符合Windows的加载规范
解决步骤
1. 重新编译生成Windows兼容的.dll文件
如果你使用的是MinGW环境的g++,执行以下编译命令(去掉类Unix系统需要的-fPIC参数,输出后缀改为.dll):
g++ -shared -o main00.dll main00.cpp
2. 修改Python代码加载正确的库文件
将Python代码中的main00.so替换为main00.dll:
import ctypes cf = ctypes.CDLL(r"main00.dll")
3. 验证函数调用(可选)
添加测试代码确认函数正常工作:
# 调用add函数并打印结果 result = cf.add(3, 5) print(result) # 预期输出:8
额外注意事项
- 确保Python解释器和编译生成的
.dll是同架构(32位/64位):如果Python是64位,必须用64位的g++编译;32位同理,否则会再次触发类似的WinError 193错误。
内容的提问来源于stack exchange,提问作者Namelezzo
相关产品推荐
相关产品推荐

