C++ c++;如果库使用了其他库的调试版本,该怎么办?

C++ c++;如果库使用了其他库的调试版本,该怎么办?,c++,linker,C++,Linker,我想使用的库调用“malloc_dbg”之类的函数,这些函数在libcmtd.lib中定义,但在libcmt.lib中没有定义(因此在发布模式下会出现链接器错误) 即使在releasemode中,我真的需要使用该库的debugversion吗?或者我可以同时使用libcmt.lib和libcmtd.lib,但只对另一个库使用libcmtd.lib,而对应用程序的其余部分使用releaseversion吗 谢谢 也许您可以自己实现malloc\u dbg并从那里调用malloc 但这只是一个解决办

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

即使在releasemode中,我真的需要使用该库的debugversion吗?或者我可以同时使用libcmt.lib和libcmtd.lib,但只对另一个库使用libcmtd.lib,而对应用程序的其余部分使用releaseversion吗


谢谢

也许您可以自己实现malloc\u dbg并从那里调用malloc


但这只是一个解决办法。您正在使用的库应该为您提供一个没有这些调用的发布版本

既然你的问题是

c++如果库使用了其他库的调试版本,该怎么办

我的建议如下:

  • 不要使用这个图书馆如果这个库甚至没有提供一个合适的发布版本,那么它就不适合任何东西
  • 如果必须,并且与您的情况一样,该库似乎需要运行库的静态调试版本,那么请尝试围绕该库创建一个包装器,以便您的项目可以使用适当的设置进行编译
  • 使用调试库编译项目。如果静态链接到运行库,那么重新分发就不会有问题,对于一些小东西,使用这种方法可能是可以接受的

  • 既然你在评论中写了,你就有这个问题,我想问题出在你身上,而不是图书馆。GLUI是一个开源项目,因此您应该能够使用适合您环境的适当设置编译库(即使是旧版本)。

    进行这些调用的库是GLUI(它的旧版本-新版本在我的设置中根本不运行)我也想到了这一点——但是我必须在哪里实现malloc_dbg才能让它工作呢?在你的应用程序中实现它,或者在静态库中实现它,并将它链接到你的项目中。只要链接器可以找到它,你就应该可以了。是的,我知道-但我只有当前版本的源代码,而那个版本不知何故不想与MFC和CRT一起运行。我该如何创建这样一个包装器呢?目前,您可能不应该在创建包装器上花费时间,而应该在运行这个库的当前版本上花费时间!:-)