c ++如果Library使用其他库的调试版本怎么办?

时间:2010-10-27 05:49:43

标签: c++ linker

我想使用的库调用“malloc_dbg”之类的函数,这些函数在libcmtd.lib中定义,但在libcmt.lib中没有定义(所以我在发布模式下得到链接器错误)

我是否真的需要在releasemode中使用该lib的debugversion?或者我可以以某种方式一起使用libcmt.lib和libcmtd.lib,但是只将libcmtd.lib用于这个其他库并在我的应用程序的其余部分使用releaseversion吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

也许你可以自己实现malloc_dbg并从那里调用malloc?

但这只是一种解决方法。您正在使用的lib应该为您提供没有这些调用的发行版本!

答案 1 :(得分:0)

因为你的问题是

  

c ++ 如果Library使用其他库的调试版,该怎么做

以下是我的建议,按此顺序:

  1. 不要使用此库。 - 如果库甚至没有提供正确的发行版本,那么它就不适合任何东西。
  2. 如果你必须,并且在你的情况下,似乎lib需要运行时库的静态调试版本,那么尝试在这个库周围创建一个包装器,以便你的项目可以用适当的设置。
  3. 使用调试库编译项目。如果您静态链接到运行时库,那么您不会遇到重新分发问题,对于小东西,可能可以接受使用此方法。
  4. 由于你在评论中写了GLUI这个问题,我认为错误是你的,而不是你的库。 GLUI是一个开源项目,因此您应该能够使用适合您环境的设置编译lib(甚至是旧版本)。