You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python通过ctypes调用C函数报WinError 193错误该如何解决?

报错原因

你遇到的WinError 193错误核心原因是不同操作系统的动态库格式不兼容:

  • .so是Linux/Unix系统下的共享库格式,无法被Windows系统原生识别加载
  • Windows系统下的动态库后缀为.dll,你使用了Linux格式的库文件,系统判断它不是合法的Win32/Win64可执行程序,因此抛出错误
    额外可能的触发原因:编译的动态库位数和你安装的Python解释器位数不匹配(比如32位dll加载到64位Python环境中)
解决步骤
  1. 把C代码编译为Windows平台的dll动态库
    如果你用MinGW的gcc工具链,执行以下编译命令:
    gcc -shared -fPIC -o my_functions.dll my_functions.c
    
    如果你用Visual Studio的MSVC工具链,执行以下编译命令:
    cl /LD my_functions.c
    
  2. 修改Python代码中的库路径后缀,把.so替换为.dll,建议同时显式指定函数的参数和返回值类型避免意外错误:
    from ctypes import *
    
    so_file = "C:/PY2C/my_functions.dll"
    
    my_functions = CDLL(so_file)
    # 显式指定函数参数和返回值类型
    my_functions.square.argtypes = [c_int]
    my_functions.square.restype = c_int
    
    print(type(my_functions))
    print(my_functions.square(10))
    
    print("done")
    
  3. 保证编译工具链的位数和Python解释器位数一致:如果你的Python是64位版本,就用64位的gcc/MSVC编译dll,32位Python对应32位工具链即可。

内容的提问来源于stack exchange,提问作者Gaetano Veti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:24:04