C++ 正在运行的Dll包含其他计算机C++;

C++ 正在运行的Dll包含其他计算机C++;,c++,dll,mfc,C++,Dll,Mfc,我制作了一个普通的dll(不是MFC dll),我在那里使用了CImage类(MFC),它工作得很好。 首先,我对dll没有太多的经验,所以我想知道如果我没有使用“MFCDLL”选项,我的dll是如何工作的,这两个选项之间有什么区别 我的第二个问题是,如果我在其他使用windows操作系统的计算机上运行我的dll,那么我使用的是CImage类(MFC)这一事实是否会产生问题,或者在所有使用windows操作系统的计算机上运行dll都不会有问题 我认为,如果我使用CImage类,我的dll的大小将

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

我的第二个问题是,如果我在其他使用windows操作系统的计算机上运行我的dll,那么我使用的是CImage类(MFC)这一事实是否会产生问题,或者在所有使用windows操作系统的计算机上运行dll都不会有问题

我认为,如果我使用CImage类,我的dll的大小将因添加的其他类而增加(顺便说一句,它添加了所有MFC类,还是仅添加了CImage类?) 因此,我不依赖于运行dll的计算机,但我一点也不确定


谢谢你的时间和帮助

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

就MFC跨机器可移植性而言,静态链接到MFC(发布版本中的默认设置)是透明的,但如果动态链接到MFC(调试版本),则应确保目标机器上存在相应的MFC dll库


虽然MFC是一个相当大的框架,其好的一面和坏的一面都使用它的单一,单独的特性不是一种常见的实践,也许你应该考虑其他解决方案,像处理图像而不需要框架的所有负担。

我不理解MFC跨机移植的部分。链接静态或动态的MFC的意义是什么?我不知道发布版本和调试版本是什么。你说“对应的MFC dll库”是什么意思?我不知道CImage使用的库(这里没有写:)谢谢,请回复,这样我就可以知道dll是否可以在每台使用windows操作系统的计算机上工作。Cross-machne意味着在未最初构建dll的计算机上使用dll。在构建项目时,通常会看到两种配置:调试和发布。默认情况下,“调试生成”会在包含MFC库(动态链接)的DLL上创建一个依赖项,因此它希望该DLL在运行时存在。另一方面,Release build使用MFC库的静态版本,确保所有必需的代码都在您正在构建的dll中。您可以探索您为构建dll而创建的项目的选项。现在我了解更多!因此,我应该将我的项目构建为发布构建。为了做到这一点,我需要将“开始调试”附近的解决方案配置更改为“发布”,然后单击“构建解决方案”?是的,它将使用针对分发优化的设置(如静态MFC链接)构建您的项目。目标二进制文件应该位于项目目录的Release子目录中。