c和python混合编程ctypes不是有效的win32应用_Ctypes抛出“WindowsError:[Error 193]%1不是有效的Win32应用程序”,但它不是32/64位问题...

在Ctypes中加载Windows DLL时遇到问题,引发错误:WindowsError: [Error 193] %1 is not a valid Win32 application

在我的例子中,它是一个32位DLL,在windows7 64位上用VS2012构建,在我的开发机器上我可以很好地加载它。我使用dumpbin /headers检查了它是否为32位:

^{pr2}$

当我试图通过Ctypes在生产虚拟机(也是Windows7 64位)上加载相同的DLL时,会出现问题。我要做的是:from ctypes import *

self.dll = CDLL(dllabspath)

我得到:File "C:\Users\user\Desktop\WinPython-32bit-2.7.10.1\.....\__init__.py", line 365, in __init__

self._handle = _dlopen(self._name, mode)

WindowsError: [Error 193] %1 is not a valid Win32 application

从其他问题来看,我已经试了好几种方法。在This、this、this和this问题表明我的环境必须相同,即32位Python,32位DLL。这是我的开发系统和我正在测试的虚拟机上的情况。在这两个版本中,我使用的是最新版本的32位WinPython。它在dev机器上工作,在VM上失败。

Here,它与g++相关,并且依赖于旧的visualstudio运行时。我用VS2012编译了所有的东西,所以我不认为这在这里适用。对需要MSVCR80.dll的第三方库存在延迟加载依赖项,但它是延迟加载且从不调用的。>P>我也在目标机上安装了VisualC++ 32位运行时。

This建议DLL需要导出一个C接口,它确实这样做了。

我知道DLL的文件路径/文件名是正确的,就像以前一样,存在缺少DLL依赖项的问题,在那里我得到了一个Windows弹出窗口。这些都不见了。

这个错误非常普遍,相当隐晦。由于它在同一Python env中的dev机器上工作,我假设它与一些只有visualstudio安装才能提供给我的依赖关系有关?在

我怎样才能正确地解决这个问题?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值