调用第三方库时需注意MD/MT的链接编译方式(遇到的坑记录)
MD与/MT编译
1、/MD是动态库链接方式编译 (DEBUG版本是/MDd)
2、/MT是静态库链接方式编译 (DEBUG版本是/MTd)
编译器不会检查到的问题 我今天遇到的记录下来
当你调用第三方库的时候 你编译的第三方库是MD方式编译的
那么你的调用程序编译的时候运行库 也应该和第三方库对应
否则就像我今天遇到的情况一样 整体大部分代码没问题,说不定某个情况下就出问题了
就比如如下这段代码:
我主程序使用的是MT运行库方式连接编译 整体大部分都没问题
然而执行到这个循环体中的时候 未知次数的时候异常了 而且问题很难定位
最后想了想当初我测试这个第三方库的时候创建的工程项目是 静态库版本的 也就是MT方连接编译的
后来我又编译了这个第三方库的动态库版本 (MD方式链接)测试的时候没更改过来。。。
后面就浪费了我大半天的时间。。。
最坑的是 整体代码 尽然可以大部分跑通 小部分出问题的机率 建议大家以后开发程序的时候切记 调用第三方库编译的是什么版本 你主程序也应该和第三方库的运行库链接方式保持一致