gpt4 book ai didi

c++ - 如果在 WinXP 上的调试版本中使用 boost (C++) 库,则无法执行程序

转载 作者:行者123 更新时间:2023-11-27 22:32:16 26 4
gpt4 key购买 nike

我正在为多个 C++ 项目使用 boost。我最近进行了升级(1.33.1 到 1.36,很快到 1.37),从那时起我就不能再运行任何调试构建了。

为了确保没有其他项目问题仍然存在,我创建了一个最小的测试项目,它只包含 boost.thread,并使用它来启动一个方法。可以启动发布构建,但不能启动调试构建,尽管 Dependency Walker 显示已找到所有必需的库(这也意味着在 SxS 目录中找到了所需的 MS Debug CRT)。

在启动时我只得到:

Die Anwendung konnte nicht richtig initialisiert werden (0xc0150002). Klicken Sie auf "OK", um die Anwendung zu beenden.

这无非是“未能初始化应用程序”。互联网研究主要导致 an MS Office installation problem ,建议对 WinXP 进行修复。

那么,除了修复设置(我认为这对我谈论调试 dll 问题没有帮助),还有什么想法吗?

啊,在我忘记之前:绝对相同的源代码不会导致构建机器上出现任何错误(即,可以注册 DLL,意味着可以执行)。所以这显然是一个安装问题,但是由于 DLL 在那里,并且 dependency-walker 找到了它,我还忘记了什么?

(edit) 好吧,我还没有解决我的问题,但多亏了 deemok,我更进了一步。为了减少误解,我在下面做一些澄清:

  • 程序无法在开发者机器上运行
  • 我正在使用一个已安装的 VS2005(它是一个 VC++8 项目)
  • 我使用了 BoostPro 中的 boost 设置,编译了所有可能的构建版本,我仔细检查了它们是否存在(否则我在构建期间已经遇到链接器错误)。
  • 并且我仔细检查了我能想到的 include/lib/bin 配置的任何角落——因为 boost 在 Windows 上使用自动链接,具有特殊的命名约定,构建或启动会失败,带有更容易理解的错误消息。
  • 不能使用静态链接,因为 boost.thread 需要 DLL 项目的动态链接(我可能会在这里搞砸,但因为这个问题似乎只发生在我的机器,我不想弄乱它,因为我确信 boost-guys 有理由首先将检查放在那里)
  • 在我写的时候,我检查了 Dependency Walker,它说一切都很好。

目前它似乎是 boost-dll 中的一个错误(可能是不正确的 list ),将检查它。

最佳答案

这是一个Side-by-Side (SxS) 问题——仅仅复制 DLL 已经不够了。

关于调试版本的具体问题,请参阅:Running vc2008 debug builds on non-dev machines

简答:

You can't, because there's no installer redist for the debug runtime (and in fact the software license forbids distributing it, so you'd be breaking the EULA even if you did get something put together).

因此,您需要在那里安装 Visual Studio。

但是,如果您仍然想尝试不走那条路,您可以阅读 puetzk's answer完整的。

或者,您可以尝试 link everything statically .

关于c++ - 如果在 WinXP 上的调试版本中使用 boost (C++) 库,则无法执行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/439840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com