调用第三方库时需注意MD/MT的链接编译方式(遇到的坑记录)

MD与/MT编译

1、/MD是动态库链接方式编译 (DEBUG版本是/MDd)
2、/MT是静态库链接方式编译 (DEBUG版本是/MTd)

编译器不会检查到的问题 我今天遇到的记录下来

当你调用第三方库的时候 你编译的第三方库是MD方式编译的
那么你的调用程序编译的时候运行库 也应该和第三方库对应
否则就像我今天遇到的情况一样 整体大部分代码没问题,说不定某个情况下就出问题了
就比如如下这段代码:

TIM图片20191024163849.png

我主程序使用的是MT运行库方式连接编译 整体大部分都没问题
然而执行到这个循环体中的时候 未知次数的时候异常了 而且问题很难定位
最后想了想当初我测试这个第三方库的时候创建的工程项目是 静态库版本的 也就是MT方连接编译的
后来我又编译了这个第三方库的动态库版本 (MD方式链接)测试的时候没更改过来。。。
后面就浪费了我大半天的时间。。。

最坑的是 整体代码 尽然可以大部分跑通 小部分出问题的机率 建议大家以后开发程序的时候切记 调用第三方库编译的是什么版本 你主程序也应该和第三方库的运行库链接方式保持一致

posted @ 2019-10-24 16:48  轻风々  阅读(1279)  评论(0编辑  收藏  举报