MSYS2 UCRT64环境下Boost.Locale返回Locale Name: *问题求助
MSYS2 UCRT64环境下Boost.Locale无法生成有效区域设置问题
在Windows机器的MSYS2 UCRT64环境中使用Boost.Locale时,尽管已安装完整Boost库,且系统中存在en_US、en_US.utf8等可用区域设置,但调用Boost.Locale生成区域设置时始终返回Locale Name: *。代码可正常编译为.exe文件,无任何警告或错误。
问题代码片段
#include <boost/locale.hpp> #include <iostream> int main() { try { boost::locale::generator gen; std::locale loc = gen("en_US.utf8"); // 也试过gen("en_US") std::cout << "Locale Name: " << loc.name() << std::endl; } catch (const std::exception& e) { std::cerr << "Error creating locale: " << e.what() << std::endl; } return 0; }
Makefile相关配置
# Compiler settings CXX := g++ CPPFLAGS := -Iinclude -IC:/msys64/ucrt64/include CXXFLAGS := -g -O0 -Wall -std=c++20 -mtune=generic -Wextra -pedantic -Wshadow -Wredundant-decls -Wsign-compare LDFLAGS := -Llib -LC:/msys64/ucrt64/lib LDLIBS := -lm -lboost_locale-mt -lboost_regex-mt -licudt -licuuc
额外上下文
- MSYS2区域设置检查:执行
locale -a命令显示en_US和en_US.utf8为可用区域设置。 - 系统区域设置:在CMD中执行
systeminfo | find "System Locale"显示en-us;English (United States)。 - 环境变量:已将
LANG和LC_ALL设置为en_US.utf8,但问题未解决。 - Boost安装:已在MSYS2的ucrt64环境中安装完整Boost库(含Boost.Locale),使用命令:
pacman -S mingw-w64-ucrt-x86_64-icu、pacman -S mingw-w64-ucrt-x86_64-boost。
已尝试的操作
- 尝试生成不同区域设置,包括
C、en_US.UTF-8、en_US和en-us。 - 尝试在MSYS2 UCRT64 Shell和常规CMD中编译运行项目。
- 检查是否有错误或异常抛出,未捕获到任何异常,但输出始终为
Locale Name: *。
内容的提问来源于stack exchange,提问作者daniel
相关产品推荐
相关产品推荐

