我正在使用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