在发布和调试模式下同时使用Boost

时间:2010-01-15 16:08:48

标签: visual-c++ debugging release mixed

标题仅供戏弄。 :-) 我知道这是不可能的,但这是我的问题。

我的应用程序(实际上是DLL)使用Boost。它还使用外部API,它也使用Boost。 外部API当然是在发布二进制文件中提供的,需要发布Boost二进制文件。

当我在发布模式下编译/链接我的DLL时,我没有问题。我确切地说,我以动态的方式将我的应用程序链接到Boost(BOOST_ALL_DYN_LINK)。在调试模式下,我无法加载我的DLL。 我不确定是因为Boost,但我怀疑Windows不喜欢使用两个Boost(由外部lib调用的发行版,以及我的代码调用的调试版)。

如果我将代码静态链接到发布Boost,那会更好吗?

我认为它与CRT无关,因为我在事件查看器中没有任何内容。

我使用的是Visual Studio 2005 SP1。

感谢。

1 个答案:

答案 0 :(得分:0)

  

如果我将代码静态链接到发布Boost,那会更好吗?

是的,这就是我所期望的 - 如果你静态链接,你会在你的二进制文件中得到一个提升'副本',并且没有为你自己的增强需求加载任何增强DLL ..外部库将很乐意链接到它的发布dll文件。但是,如果外部库实际上在应用程序调用的公共API中使用boost,则无法使用此功能!在这种情况下,您将无法解决问题。如果你调用任何期望增强的API,你的boost构建必须匹配API实现的推动。