我正在使用boost.log。除了极端数量的agro实际获得并构建它之外,它在Windows 7和Vista上一直运行正常。为什么在Windows XP上boost.log崩溃?
我现在尝试使用Windows XP上的应用程序,但boost.log与未处理的异常(Access violaton reading location 0x00000000
)吹。
这发生在方法log:mt_nt5::sources::aux::set_severity_level
中,它试图设置一个名为g_SeverityLevel
的静态全局变量。
我发现了一个document,暗示与BOOST_LOG_NO_COMPILER_TLS
建设。我试过了,但没有奏效。
I 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
文件夹中的内容,其内容是相同的!
因此,一个相关的问题可能现在是:am我正确使用bjam命令行?
一次偶然的机会,您使用VC++与'/ clr'编制? – ildjarn 2011-12-22 19:28:28
我正在使用VC++(Visual Studio 2010),但没有使用/ clr – 2011-12-22 19:37:52
什么版本的XP? VC++ 2010要求目标平台至少为XP SP2。 – ildjarn 2011-12-22 19:58:26