我的C++ IDE是VisualStudio 2012 Express版本,我的Python IDE是AptAA3(64位)。我的电脑是Windows 7 64位的。在
我用C++编写了一个.dll(win32控制台应用程序),基本上遵循了MSDN的指令。当我用C++应用程序调用它时,效果很好。在
然后我尝试通过以下代码从Python调用它:
import ctypes
d = ctypes.WinDLL("C:\\DynamicLibrary\\Debug\\MathFuncsDll.dll")
但是,我有以下错误:
^{pr2}$我在google上搜索了这个错误消息,一些帖子说这是因为32位和64位之间的兼容性。但我对此表示怀疑,因为我的IDE和系统都是64位的。在
我能知道我错了什么吗?在
提前致谢。:)
将C代码生成到X64版本
我测试过了,实际上效果很好
对于该错误,最常见的解释是系统试图将32位DLL加载到64位进程中,反之亦然。事实上,您的系统是64位的,这使得诊断更有可能。也许你的Python是64位,但是C++项目输出一个32位的DLL。反之亦然。在
在这个问题中,您声明您的Python安装是64位的。在这种情况下,您需要查看C++项目。你的目标是哪个站台?Win32还是x64?我的答案是你成为我的目标。在
这是最有可能的解释。除此之外,下一个最有可能的原因是完全相同的问题,但是对于其中一个依赖项。Python进程和DLL匹配,但是当解析DLL的依赖关系时,加载程序会发现一个错误位的DLL。在
是的,你的研究是正确的。在
这并不能保证您将构建一个64位二进制文件。事实上,VS2012 IDE是一个32位的应用程序。编译器和CRT负责生成64位二进制文件。此外,visualstudio的默认设置是生成一个32位二进制文件
您可以轻松地搜索并确定如何使用visualstudio构建64位二进制文件。或者,请参考链接How to: Configure Visual C++ Projects to Target 64-Bit Platforms
这仍然不能说明您的Python安装有多糟糕。在
如果有疑问,请检查您的
dll
和您的python.exe
的位。您可以使用dumpbin
轻松确定位相关问题 更多 >
编程相关推荐