vs2010 编译dll项目的Release版本时出现以下错误:
error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)
百度该问题,是因为以下原因:
CRT 库对 new、delete 和 DllMain 函数使用弱外部链接。MFC 库也包含 new、delete 和 DllMain 函数。
这些函数要求先链接 MFC 库,然后再链接 CRT 库。
但是我不明白什么是弱外部链接,根据提供的解决办法做以下修改后编译成功。
1. 打开项目属性,找到配置属性-链接-输入
2. 在忽略特定默认库项目里输入 MSVCRT.lib;mfcs100.lib
3. 在附加依赖相里输入 mfcs100.lib;MSVCRT.lib
就是强制链接器按照正确的顺序链接库。