我有一個使用std::regex
的C++ 14應用程序。對於某些正則表達式,如果分頁方面不可用,std::regex
構造函數將拋出std::bad_cast
(通過std::use_facet
)。與庫鏈接導致整理方面從char中丟失
我想將我的應用程序與作爲.so發佈的第三方庫鏈接,但我沒有源代碼。這個庫給出了glibc所需的所有內容的默認符號版本。它指定的版本是2.2.5(2002年發佈)。例如,納米告訴我:
U [email protected]@GLIBC_2.2.5
如果我沒有第三方庫鏈接我的應用程序,正則表達式工作。但是當我與第三方庫鏈接時,std::has_facet<std::collate<char>>(std::locale())
返回false,所以構造函數會拋出std::regex
。
我的猜測是,第三方庫所需的非常舊的符號版本會干擾默認的語言環境。我試圖在我的應用程序中更改默認語言環境,但這沒有幫助。
我該如何解決這個問題?