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

CTypes调用WSL编译的.so文件报WinError 193如何适配Windows Anaconda

报错根因

你遇到的OSError: [WinError 193] %1 is not a valid Win32 application报错本质是二进制格式不兼容:
WSL属于Linux兼容环境,用gcc编译出的libtest.so是ELF格式的Linux专属共享库,而PyCharm调用的Anaconda是Windows原生程序,仅支持识别PE格式的Windows动态链接库(.dll文件),二者无法跨环境直接通用。

可行修复方案

方案1:切换PyCharm运行环境至WSL

无需修改现有编译产物与业务代码,仅需调整PyCharm的Python解释器配置:

  • 打开PyCharm解释器设置页面,新增「WSL」类型的解释器
  • 选择对应WSL发行版内已经安装的Python作为项目解释器
    项目运行时会直接在WSL环境中执行,可正常加载已编译的libtest.so文件。

方案2:编译Windows兼容的dll动态库

如果要保留Windows原生Anaconda作为运行环境,可选择以下任意一种方式编译符合要求的动态库:

  1. Windows本地编译:安装MinGW-w64环境后,执行命令gcc -shared -o libtest.dll test.c编译生成dll文件,将Python代码中的库加载逻辑修改为lib = CDLL('./libtest.dll')即可运行。
  2. WSL交叉编译:在WSL中安装MinGW-w64交叉编译工具链(Ubuntu发行版可执行sudo apt install gcc-mingw-w64-x86-64完成安装),执行交叉编译命令x86_64-w64-mingw32-gcc -shared -o libtest.dll test.c生成Windows可用的dll文件,同样修改Python代码中的库加载路径即可。
注意事项

编译生成的dll文件位数需要和Python解释器位数保持一致,64位Python只能加载64位编译的dll,32位Python只能加载32位编译的dll,否则仍会触发相同报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:54:00