Libstdc++ 为什么可以';您是否可以互换使用lib的调试/发布版本 在C++中,大多数LIBS都是在调试/发布版本中出现的。 问题1。调试版本和发布版本之间的最大区别是什么(例如,使用其中一个版本与使用另一个版本相比有什么优势)
问题2。一个库只有一个函数的实现,如果您使用的是调试/发布版本,函数实现会发生什么变化 问题3。你能在调试模式下构建应用程序并使用lib的发布版本吗 谢谢。回答1 调试模式Libstdc++ 为什么可以';您是否可以互换使用lib的调试/发布版本 在C++中,大多数LIBS都是在调试/发布版本中出现的。 问题1。调试版本和发布版本之间的最大区别是什么(例如,使用其中一个版本与使用另一个版本相比有什么优势),libstdc++,Libstdc++,问题2。一个库只有一个函数的实现,如果您使用的是调试/发布版本,函数实现会发生什么变化 问题3。你能在调试模式下构建应用程序并使用lib的发布版本吗 谢谢。回答1 调试模式 包含用于调试的符号。换句话说,调试器可以将程序的当前位置链接到其在源代码中的位置 可能只包含调试代码,例如#ifdef debug块中的代码 释放模式 更快,因为它已删除与调试相关的代码 由于缺少符号,因此在调试中受到限制 答复2 取决于库的实现方式 答复3 除非他们有相同的 调试版本通常在构建时很少进行优
- 包含用于调试的符号。换句话说,调试器可以将程序的当前位置链接到其在源代码中的位置
- 可能只包含调试代码,例如
块中的代码#ifdef debug
- 更快,因为它已删除与调试相关的代码
- 由于缺少符号,因此在调试中受到限制
答复2
- 取决于库的实现方式
答复3
- 除非他们有相同的
#ifdef DEBUG
或等效程序时,该代码在发布版本中并不存在(当然)。这可能是额外的错误检查、日志记录、断言等
通常情况下,调试和发布之间的函数接口不应该有所不同,因此您可以正常地将调试和发布链接在一起,而不会遇到太多麻烦
但是,在某些情况下(尤其是在Windows上),由于某些LIB中内置了DLL加载,因此变得非常困难。有些可能尝试加载DLL的调试版本,有些可能希望发布。它们不能同时加载到同一进程中。回答3注释:在Windows上,调试和发布从来没有相同的API。