2011-06-08 33 views
0

我做了一个正常的dll(不是MFC的dll),我使用那里的CImage类(MFC),它的工程很好。 首先我没有很多dll的经验,所以我不知道我的DLL如何工作,如果我没有使用“MFC Dll”选项,以及两个选项之间的区别是什么。运行dll包含其他计算机中的MFC类C++

我的第二个问题是,如果我使用CImage类(MFC)的事实可以使问题,如果我在一些其他计算机上运行我的DLL与Windows操作系统或将没有问题在每台带有Windows操作系统?

我认为,如果我使用CImage类,我的dll的大小将增加,因为正在添加额外的类(顺便说一句,它添加了所有的MFC类或只有CImage之一?) 因此I不要在运行我的dll的计算机上转发,但我不确定。

谢谢你的时间和帮助!

回答

1

如果您要遵循MFC框架使用准则,MFC DLL更多的是为您设置一些样板代码的DLL向导。使用MFC并不是绝对必要的。您仍然可以创建自己的代码并按需要使用它。

由于涉及到MFC跨机器的可移植性,当您静态链接到MFC(发布版本中的默认设置)时它是透明的,但是如果链接到目标机器上时应确保相应的MFC dll库存在MFC动态(调试版本)。

虽然MFC是一个相当大的框架,它的好与坏使用单一的单独的功能,但单独的功能并不常见,也许您应该考虑其他解决方案,如http://openil.sourceforge.net用于处理图像,而没有框架的所有负担。

+0

我没有理解MFC跨机器可移植性的部分。 – 2011-06-08 12:43:35

+0

静态或动态链接到MFC的含义是什么? 我不太清楚发布版本和调试版本是什么。 你说“对应的MFC dll库”是什么意思?我不知道CImage使用的lib(不写在这里: http://msdn.microsoft.com/en-us/library/bwea7by5(v=vs.80).aspx) 谢谢,并请回复所以我可以知道如果该DLL可以在每台带有Windows操作系统的计算机上工作。 – 2011-06-08 12:48:33

+0

跨机器意味着在最初没有构建的计算机上使用dll。在构建项目时,通常会看到两种配置:调试和发布。调试版本默认创建了一个依赖于包含MFC库(动态链接)的DLL,因此它期望该DLL在运行时存在。另一方面,发布版本使用MFC库的静态版本,确保所有必要的代码都在您正在构建的dll中。您可以探索您创建的用于构建该dll的项目的选项。 – jszpilewski 2011-06-08 12:53:20

相关问题