1

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

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

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

如果我将我的代码与发布 Boost 静态链接,它会更好地工作吗?

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

我使用 Visual Studio 2005 SP1。

谢谢。

4

1 回答 1

0

如果我将我的代码与发布 Boost 静态链接,它会更好地工作吗?

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

于 2010-01-15T16:27:09.140 回答