在其他计算机 C++ 中运行包含 MFC 类的 Dll

Posted

技术标签:

【中文标题】在其他计算机 C++ 中运行包含 MFC 类的 Dll【英文标题】:Running Dll Contains MFC Class in other computer C++ 【发布时间】:2011-06-08 11:58:04 【问题描述】:

我已经制作了一个普通的 dll(不是 MFC dll),我在那里使用了 CImage 类 (MFC),效果很好。 首先我在 dll 方面没有太多经验,所以我想知道如果我不使用“MFC Dll”选项,我的 dll 是如何工作的,这两个选项之间有什么区别。

我的第二个问题是,如果我在其他一些具有 Windows 操作系统的计算机上运行我的 dll,或者在每台具有 Windows 操作的计算机上运行它,我使用 CImage 类 (MFC) 是否会产生问题系统?

我认为,如果我使用 CImage 类,我的 dll 的大小会因为正在添加的其他类而增长(顺便说一下,它添加了所有 MFC 类还是只添加了一个 CImage 类?) 因此我不会在运行我的 dll 的计算机上进行中继,但我完全不确定。

感谢您的时间和帮助!

【问题讨论】:

【参考方案1】:

MFC DLL 更像是一个 DLL 向导,如果您要遵循 MFC 框架使用指南,它会为您设置一些样板代码。能够使用 MFC 并不是绝对必要的。您仍然可以创建自己的代码并根据需要使用它。

关于 MFC 跨机移植性,静态链接到 MFC 时它是透明的(Release 版本中的默认设置),但如果链接到 MFC,则应确保目标计算机上存在相应的 MFC dll 库动态(调试构建)。

虽然 MFC 是一个相当大的框架,但它的优点和缺点都使用其单一的、单独的功能并不是一种常见的做法,也许您应该考虑使用其他解决方案,如 http://openil.sourceforge.net 来处理图像,而不需要框架的所有负担。

【讨论】:

MFC跨机移植部分没看懂。 静态或动态链接到MFC是什么意思?而且我不太清楚 Release 构建和 Debug 构建是什么。你说的“相应的MFC dll库”是什么意思?我不知道 CImage 使用的库(这里没有写:msdn.microsoft.com/en-us/library/bwea7by5(v=vs.80).aspx)谢谢,请回复,以便我知道 dll 是否可以在每台 Windows 操作系统的计算机上运行。 跨机意味着在最初未构建的计算机上使用 dll。在构建项目时,您通常会看到两种配置:Debug 和 Release。默认情况下,调试版本会创建对包含 MFC 库(动态链接)的 DLL 的依赖关系,因此它期望 DLL 在运行时存在。另一方面,发布版本使用 MFC 库的静态版本,确保所有必要的代码都在您正在构建的 dll 中。您可以探索您创建的项目的选项来构建 dll。 好的,现在我明白了很多!所以我应该将我的项目构建为发布版本。为此,我需要将“开始调试”附近的解决方案配置更改为“发布”,然后单击构建解决方案? 是的,它将使用针对静态 MFC 链接等分发优化的设置来构建您的项目。目标二进制文件应位于项目目录的 Release 子目录中。

以上是关于在其他计算机 C++ 中运行包含 MFC 类的 Dll的主要内容,如果未能解决你的问题,请参考以下文章

MFC

标准C++中的string类的用法总结

标准C++中string类的用法总结

ctime是标准c++的类么

在 MFC 中运行时更改编辑框属性

mfc 图片列表显示