如何在第三方库不提供调试版本时调试应用程序?

时间:2010-02-15 20:48:21

标签: c++ debugging visual-c++ linker

我有一个我正在使用的应用程序,它使用两个第三方库,每个库都有预编译的lib和dll,其中一个为调试和发布版本提供必要的.lib文件({{1}另一个只为发布版本提供A[d].lib个文件(.lib)。

在发布模式下编译(使用MSVC9)工作正常,但尝试在调试模式下编译失败,因为第三方B.lib需要A(或LIBCMTD.lib)而第三方{{1}需要MSVCRTD.lib(或B)。

我可以解决这个问题,还是我在发布模式下调试了?

3 个答案:

答案 0 :(得分:3)

您想要完整的调试模式,还是只想调试?如果是后一种情况,只需转到链接器选项,然后打开符号信息(.pdb)的生成。这样,您可以在自己的代码中使用调试器,逐行操作,并查看变量。如果您对优化程序创建的控制流的更改感到恼火,您可以转到编译器选项,并关闭优化。这样您就可以在发布模式下使用调试器和构建。一旦您对代码感到满意,您只需将设置更改回创建优化代码即可。

答案 1 :(得分:1)

尝试将/NODEFAULTLIB:LIBCMT传递给链接器。

答案 2 :(得分:1)

我不确定是否可以直接使用静态库。我建议你将库B打包成一个动态库,然后使用这个新的B'库。你的问题就会消失。