如果我删除_USRDLL预处理器定义会有什么后果?

时间:2013-09-26 14:31:36

标签: visual-c++ dll mfc

我是初学者!我尝试使用旧的DLL共享MFC库,但当我用VC6编译它时,我得到错误“LNK2005:_DllMain @ 12已定义”。 我发现了很多解释,但只删除“_USRDLL”,问题就消失了,dll也能正常工作。现在我对这一行动的后果感到有些困惑。

此外,我在MSDN上读到USRDLL对应于静态链接到MFC的常规DLL。因此,当我使用VC6创建一个新的Win32动态链接库时,如果我选择Project-> Setting-> Genaral“在共享dll中使用MFC”或“不使用MFC”,为什么“_USRDLL”已经存在? 抱歉我的英文不好,谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

带有MFC的常规DLL永远不会有DllMain。 这由CWinApp对象涵盖。

只有扩展DLL具有DllMAin。阅读TN033。 在这种情况下必须定义_USRDLL!