标题没办法解释清楚,这里举例描述一下问题:
ProjectA(主程序)包含了B.lib(ProjectB),ProjectA和ProjectB都用到了STL,并且不是在同一台机器上编译的。
当在ProjectA中调试程序时想进入STL的函数实现,发现根本进不去。
比如这一行代码:
std::string str("cnblogs");
在这行代码下断点并Step Into,发现无法进入string的构造函数。
如果给某些STL函数传入错误参数,调试时发生错误中断后也无法定位到源码。
分析问题应该是ProjectA链接的STL根本不是在本机的源码,而是B.lib中已经编译进去的STL的实现。
由于B.lib是在另一台机器上编译的,所以ProjectA中找不到STL的源码实现。
改变STL头文件和ProjectB提供的头文件的包含顺序也无济于事。
后来又发现有些工程包含了dll也会出现一样的问题,比如ProjectA隐式链接C.dll(ProjectC)。
所以我的问题是,是否能够通过改变工程设置或其他方法,能够让我的ProjectA链接我本机的STL源码,而不是链接子模块中的STL实现?
:)