本文主要是介绍MFC扩展DLL的DEF产生的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于标准的MFC扩展DLL,当需要要编译成两个不同名的版本时:如,A版和U版。
其它VC程序在使用时,一般采用lib方式链接。扩展DLL导出两个不同名的lib,分别
对应不同的DLL版本(两个版本不同名MyMFCDLL.dll和MyMFCDLLU.dll)。
一般情况,采用DEF文件来进行lib和dll的对应。如下:
LIBRARY "MyMFCDLL"
或
LIBRARY "MyMFCDLLU"
这样呢,会造成一个麻烦,在迁移代码后,需要重新生成Lib时,因为我们只有一
个Def,所以需要手工将LIBRARY后的标识进行修改后再编译,否则总有一个版本的Lib
输出是不正确的。
别小看这个问题,很多人都会碰到这个问题,还半天找不到原因,呵呵。
(用Depends工具很容易找出问题)。
其实呢,对于MFC扩展DLL采用的是预编译指令方式的输出函数,如下:
class AFX_EXT_CLASS CKDPrint
#define AFX_EXT_CLASS AFX_CLASS_EXPORT
#define AFX_CLASS_EXPORT __declspec(dllexport)
所以,我们完全可以不用DEF文件,以避免可能的手误。
处理方式:
方法一:
去掉DEF文件,如果不存在Def文件,编译生成的Lib会自动对应当前的Link生成的
DLL名,刚好满足我们的需求。
方法二:
在LIBRARY后置空,不指定对应的DLL名,采用默认名称。
这篇关于MFC扩展DLL的DEF产生的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!