调试代码的时候,一般报错都会指出具体的错误,错误文件,错误行数;但是偶尔你会发现,有的是链接错误。
例如,同样的一套code,debug模式可以正常编译,release模式就报错了,报错是在一个obj文件中,错误类型是: error LNK2001: unresolved external symbol memset。
问题原因:debug模式,编译器不会对代码进行优化;release模式,编译器会对代码进行优化
解决方法:添加编译参数 -od(对部分代码禁止优化),具体如下:
MSFT:*_*_IA32_CC_FLAGS = /GL - /Od
MSFT:*_*_X64_CC_FLAGS = /GL - /Od
关于VS工具编译参数介绍,可以看《编译原理》,也可以直接在微软官网看,链接如下:
https://docs.microsoft.com/en-us/previous-versions/windows/embedded/aa448731(v%3dmsdn.10)