在 Python 3.2 中使用 MFC .dll 文件
Posted
技术标签:
【中文标题】在 Python 3.2 中使用 MFC .dll 文件【英文标题】:Using an MFC .dll file with Python 3.2 【发布时间】:2011-09-08 09:49:29 【问题描述】:我目前正计划使用 Python 访问基于 MFC Dialog 的应用程序的 .dll 文件。我是 Python 新手,安装了最新版本的 Python,即 3.2。我也安装了 PythonWin,但不确定它是否有用。在ctypes 的帮助下,我已经了解了使用python 的基础知识。在我的 dll 文件中,我有两个函数:
double BoxArea(double L, double H, double W);
double BoxVolume(double L, double H, double W);
我已经使用 extern dllimport 命令在我的 mfc 对话框应用程序中访问这些。
extern "C" __declspec(dllexport)void BoxProperties(double Length, double Height,
double Width, double& Area, double& Volume);
尝试使用另一个 mfc 程序访问时,一切正常。现在,我正在尝试使用 Python 访问这两个函数。谁能建议我该怎么做以及哪些命令可以直接让我访问它?
非常感谢。
【问题讨论】:
嗯,用 PyQt? MFC 已经过时了。您正在尝试做的事情非常奇特,可能无法工作或需要很长时间才能实施(因为您没有适当的绑定)。 我在网上查了一下,有人建议使用 PythonWin。我想知道那会不会有什么好处。在您看来,如果我需要将 MFC 函数与 Python 一起使用,我应该如何构建它,因为最终我需要能够使用这种脚本语言来与我的 .dll 对话,并且只更改 .dll 而不是整个应用程序。 我确实尝试过***.com/questions/252417/…,但没有这样的运气。 您能转向更好的 GUI 工具包吗? 您不需要在 DLL 启动时初始化 MFC 吗?这可能只是假设它被加载到 MFC 环境中。 【参考方案1】:我认为this 应该让您对您正在尝试做的事情有所了解。希望这会有所帮助。
【讨论】:
这绝对看起来与我正在做的事情有关。感谢您的链接:) 链接无效。【参考方案2】:MFC 不仅仅是一个库,它还是一个平台。这将取决于某些假设,例如在程序启动时进行正确的初始化,以及将定期调用 MFC 消息泵等。 Python 不会满足这些假设,使其正常工作是不切实际的。
可以对 DLL 进行编程,使其在内部使用 MFC,但完全独立,但我猜你的不是。见http://msdn.microsoft.com/en-us/library/30c674tx(v=vs.90).aspx
【讨论】:
能否请您给我推荐一个使上述程序工作的代码?我正在尝试,但仍然没有给出任何正确的结果:( @Emulator,确保您的 DLL 遵循我在链接中提供的指南。如果没有,那么您尝试做的事情将是不可能的。以上是关于在 Python 3.2 中使用 MFC .dll 文件的主要内容,如果未能解决你的问题,请参考以下文章
(转载)DLL动态链接库编程入门之三:MFC规则DLL(上)