【问题标题】:Using in the same time Boost in release and debug mode在发布和调试模式下同时使用 Boost
【发布时间】:2011-01-05 14:09:10
【问题描述】:

标题只是为了取笑。 :-) 我知道这是不可能的,但这是我的问题。

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

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

如果我将我的代码静态链接到版本 Boost 会更好吗?

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

我使用 Visual Studio 2005 SP1。

谢谢。

【问题讨论】:

    标签: visual-c++ debugging release mixed


    【解决方案1】:

    如果我将我的代码静态链接到版本 Boost 会更好吗?

    是的,这就是我所期望的——如果你静态链接,你会在你的二进制文件中得到一个 boost '副本',并且不会为你自己的 boost 需求加载任何 boost DLL .. 外部库会很高兴地链接到它的版本dll。但是,如果外部库实际上在您的应用程序调用的公共 API 中使用了 boost,这将不起作用!在这种情况下,您将无法解决问题。如果您调用任何期望提升内容的 API,您的提升构建必须与 API 实现的提升相匹配。

    【讨论】:

    • 我打算将我的调试应用静态链接到发布的 Boost。你的“但是”仍然适用吗?
    • 如果您将应用程序与 boost .. 的发布版本链接。为什么不使用与外部库相同的 boost DLL 运行时?我认为不需要静态链接。
    • 你完全正确。我的想法一直停留在 2 个 Boost 包上。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2015-03-25
    • 2011-06-14
    • 2014-11-07
    • 2011-10-30
    • 2019-12-30
    相关资源
    最近更新 更多