【现象】:
编译报错 error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义 _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义
VS2010解决办法:
1)Debug版本:(没有验证)
项目-属性-链接器-输入:忽略特定库中输入mfc80d.lib;mfcs80d.lib
项目-属性-链接器-附加依赖项:mfc80d.lib;mfcs80d.lib
就可以保证mfc80d和mfcs80d先于MSVCRTD.lib链接,OK,成功
2)Release版本(VS2010验证可以编译通过)
与Debug版本不同在于mfc80.lib;mfcs80.lib
【现象】
VC生成静态库release版比debug版库文件尺寸更大
【解决】
VS的Build选项中Optimization项下的Whole Program Opeimization选项不同设置引起:
Debug版的此选项缺省设成No,而Release版的此选项缺省设成Enable link-time code generation (/GL)
由于静态库并不进行链接,而全局优化要等到链接时,所以release版产生的库文件就要比debug版的大上不少了。
改成跟debug一样的选项就可以了
【现象】
VS2015 使用报错
【解决】
项目----项目属性----c/c++----常规----SDL检查改为“否”
【现象】
VS2015 使用告警,This function or variable may be unsafe
【解决】
项目----项目属性----c/c++----编译预处理----预编译宏,添加 _CRT_SECURE_NO_WARNINGS