我正在使用 boost.log。除了实际获取和构建它的大量agro之外,它在 Windows 7 和 Vista 上运行良好。
我现在正尝试在 Windows XP 上使用该应用程序,但 boost.log 出现未处理的异常 ( Access violaton reading location 0x00000000
)。
这发生在log:mt_nt5::sources::aux::set_severity_level
尝试设置名为 的静态全局变量的方法中g_SeverityLevel
。
我找到了一份建议使用BOOST_LOG_NO_COMPILER_TLS
. 我试过这个,但它没有用。
我对此进行了进一步阅读,问题似乎出在声明为的全局变量周围__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
有无这个flag构建后文件夹中输出的内容,内容是一样的!
所以,一个相关的问题现在可能是: 我是否正确使用了 bjam 命令行?