gpt4 book ai didi

c++ - 为什么 boost.log 在 Windows XP 上会崩溃?

转载 作者:行者123 更新时间:2023-11-30 04:30:37 28 4
gpt4 key购买 nike

我正在使用 boost.log。除了极量agro实际上获取并构建它,它在 Windows 7 和 Vista 上运行良好。

我现在正尝试在 Windows XP 上使用该应用程序,但 boost.log 出现未处理的异常(访问违规读取位置 0x00000000)。

这发生在 log:mt_nt5::sources::aux::set_severity_level 方法中,它尝试设置一个名为 g_SeverityLevel 的静态全局变量。

我找到了一个 document建议使用 BOOST_LOG_NO_COMPILER_TLS 构建。我试过了,但没用。

read further对此,问题似乎出在声明为 __declspec(thread) 的全局变量周围,这使得它成为线程静态的。这只是 Vista 之前的操作系统的问题。

我静态链接到 boost.log,所以我不明白为什么我的预处理器 BOOST_LOG_NO_COMPILER_TLS 没有被识别。

我错过了什么吗?

更新:

无论我在使用 bjam 构建库时做什么,我的 BOOST_LOG_NO_COMPILER_TLS 标志都没有被识别。我正在这样构建:

bjam address-model=32 --toolset=msvc-10.0 --build-type=complete 
--with-log variant=debug link=static runtime-link=static
define=BOOST_LOG_NO_COMPILER_TLS stage

我比较了使用和不使用这个标志构建后 stage 文件夹中的输出内容,内容是相同的!

因此,一个相关的问题现在可能是:我是否正确使用了 bjam 命令行?

最佳答案

它崩溃是因为它使用了线程静态声明。如上面链接的文章中所述,如果使用 LoadLibrary(也涵盖 COM 组件)加载包含日志记录代码的 DLL,这会导致 Vista 之前的操作系统出现问题。

如果你有这个问题,那么重新编译boost.log库,但是don't forget to clear out your bin.v2 folder first !

关于c++ - 为什么 boost.log 在 Windows XP 上会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8608780/

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