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

问题描述 投票:3回答:1

我是初学者!我尝试将共享的MFC库与旧的dll一起使用,但是当我使用VC6对其进行编译时,出现错误“ LNK2005:_DllMain @ 12已经定义”。我发现了很多解释,但是仅删除“ _USRDLL”,问题消失了,dll正常工作了。现在,我对该操作的后果感到困惑。

另外,我在MSDN上读到USRDLL对应于静态链接到MFC的常规DLL。因此,当我用VC6创建一个新的Win32动态链接库时,如果在“项目”->“设置”->“在共享的dll中使用MFC”或“不使用MFC”中进行选择,为什么“ _USRDLL”已经存在?对不起,我的英语不好,谢谢您的帮助!

visual-c++ dll mfc
1个回答
2
投票

带有MFC的常规DLL从来没有DllMain。这由CWinApp对象覆盖。

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

© www.soinside.com 2019 - 2024. All rights reserved.