我有一个我正在使用的应用程序,它使用两个第三方库,每个库都有预编译的lib和dll,其中一个为调试和发布版本提供必要的.lib
文件({{1}另一个只为发布版本提供A[d].lib
个文件(.lib
)。
在发布模式下编译(使用MSVC9)工作正常,但尝试在调试模式下编译失败,因为第三方B.lib
需要A
(或LIBCMTD.lib
)而第三方{{1}需要MSVCRTD.lib
(或B
)。
我可以解决这个问题,还是我在发布模式下调试了?
答案 0 :(得分:3)
您想要完整的调试模式,还是只想调试?如果是后一种情况,只需转到链接器选项,然后打开符号信息(.pdb)的生成。这样,您可以在自己的代码中使用调试器,逐行操作,并查看变量。如果您对优化程序创建的控制流的更改感到恼火,您可以转到编译器选项,并关闭优化。这样您就可以在发布模式下使用调试器和构建。一旦您对代码感到满意,您只需将设置更改回创建优化代码即可。
答案 1 :(得分:1)
尝试将/NODEFAULTLIB:LIBCMT
传递给链接器。
答案 2 :(得分:1)
我不确定是否可以直接使用静态库。我建议你将库B打包成一个动态库,然后使用这个新的B'库。你的问题就会消失。