import mymodule, ctypes
#import pygame

foo = ctypes.cdll.MyDll.foo

print 'success'

如果我取消注释import pygame这个失败,WindowsError: [Errno 182] The operating system cannot load %1。堆栈帧是在ctypes的Python代码,试图加载MYDLL。 Win32错误代码182是ERROR_INVALID_ORDINAL。如果pygame的进口是不存在,脚本成功运行。

更新:如果我运行在调试器外部的%1充满了“libpng13.dll”,这是在工作目录,并通过MYDLL参考,并pygame的肯定是装的libpng一些版本。我不知道我会怎么解决这个问题。

有帮助吗?

解决方案

这听起来像一个DLL冲突。看来,import pygame加载DLL的一些,是不是与MyDll需要一个dll兼容。 你应该尝试的Sysinternals ProcessExplorer调试此,它可以显示哪些DLL进程已加载;寻找在这两种情况下不同的DLL。

另一个有用的工具来调试DLL问题是dependencywalker,从 www.dependencywalker.com

其他提示

更新备案:我相信有由不同的模块(pygame的,和MYDLL)被加载的libpng的多个版本。我用多至两个分离的模块,一切都饰面。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top