从Python调用定制的C++ DLL

2024-06-25 22:50:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我的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位的。在

我能知道我错了什么吗?在

提前致谢。:)


Tags: 版本应用程序windows错误指令ctypesidedll
3条回答

将C代码生成到X64版本

我测试过了,实际上效果很好

对于该错误,最常见的解释是系统试图将32位DLL加载到64位进程中,反之亦然。事实上,您的系统是64位的,这使得诊断更有可能。也许你的Python是64位,但是C++项目输出一个32位的DLL。反之亦然。在

在这个问题中,您声明您的Python安装是64位的。在这种情况下,您需要查看C++项目。你的目标是哪个站台?Win32还是x64?我的答案是你成为我的目标。在

这是最有可能的解释。除此之外,下一个最有可能的原因是完全相同的问题,但是对于其中一个依赖项。Python进程和DLL匹配,但是当解析DLL的依赖关系时,加载程序会发现一个错误位的DLL。在

I've googled about this error message, and some posts say it because the compatibility between 32- and 64-bits. But I doubt it, since my IDE's and system are all 64-bit.

是的,你的研究是正确的。在

My C++ IDE is Visual Studio 2012 Express Version, My computer is Windows 7 64-bits.

这并不能保证您将构建一个64位二进制文件。事实上,VS2012 IDE是一个32位的应用程序。编译器和CRT负责生成64位二进制文件。此外,visualstudio的默认设置是生成一个32位二进制文件

您可以轻松地搜索并确定如何使用visualstudio构建64位二进制文件。或者,请参考链接How to: Configure Visual C++ Projects to Target 64-Bit Platforms

and my Python IDE is Aptana3 (64-bit). My computer is Windows 7 64-bits.

这仍然不能说明您的Python安装有多糟糕。在

如果有疑问,请检查您的dll和您的python.exe的位。您可以使用dumpbin轻松确定位

C:\Python27>dumpbin /headers python.exe|grep "machine"
             14C machine (x86)

相关问题 更多 >