VS201X中出现“当前不会命中断点。源代码与原始版本不同。”,主要是由于当前dll动态库不是当前代码编译出来的。
有一种情况要特别注意,如:a.dll依赖于b.lib,而b.lib同时存在于路径1和路径2,“附加库目录中”同时配置了路径1和路径2,且路径1顺序在路径2前面。
如果此时修改了b.lib的源代码,编译后新的b.lib出现在路径2中,而路径1中始终是旧的b.lib,由于a.dll是否要重新编译,一方面取决于自身代码a库的改动,另一方面取决于其依赖库b.lib是否更改过。
本例中,只修改了b静态库的代码,但是由于路径1的顺序在路径2前面,而路径1中始终是旧的b.lib,因此编译器会认为b库没有被改动,加上a库代码没有改动,所以不会再次编译a动态库。
因此造成的后果是:无论b库代码怎么改动,a库依旧不为所动。进而不能有效断点到b静态库代码中去。
解决方法:将路径2顺序在路径1前面,保证a动态库在b静态库代码改动时,第一时间定位到路径2中最新编译的b库,这样a动态库会因而b静态库的修改而自动编译更新。
本文揭示了VS201X中动态库编译问题,焦点在于dll依赖库版本不匹配。当多个库路径配置且旧版本库在前时,如何调整路径顺序以确保动态库根据源码更新。解决方法是调整库路径,让新编译的库优先。

3877

被折叠的 条评论
为什么被折叠?



