Closed Eitetsu0 closed 9 months ago
Non-C locale detected. This is not supported. Call 'setlocale(LC_NUMERIC, "C");' in your code.
跟着报错操作吧,可以试试在主函数里加个 setlocale(LC_NUMERIC, "C");
,应该和你的系统更新相关。
在main函数开头加了,没有效果。
不过我又在环境变量里设置了LC_NUMERIC=C
,正常了😹。
可是以前一直都没特意设置过这个环境变量,一直是系统根据LANG自动设置的 LC_NUMERIC="zh_CN.UTF-8"
,好奇怪。
看了 https://github.com/xfangfang/wiliwili/issues/236 我觉得把这个重开一下吧,有进展我发这里
我在mac上测试,新增的那条语句是完全可以使用的,比如:
将其改为 setlocale(LC_NUMERIC, "zh_CN.GB2312");
软件就无法正常开启。
你可以在 utils/config_helper.cpp
中做如下修改来测试
+static bool check_locale(void)
+{
+ char *name = setlocale(LC_NUMERIC, NULL);
+ if (name) {
+ brls::Logger::info("{}", name);
+ }
+ return !name || strcmp(name, "C") == 0 || strcmp(name, "C.UTF-8") == 0;
+}
void ProgramConfig::init() {
brls::Logger::info("wiliwili {}", APPVersion::instance().git_tag);
+ brls::Logger::info("check_locale1: {}", check_locale());
// Needed for MPV
setlocale(LC_NUMERIC, "C");
+ brls::Logger::info("check_locale2: {}", check_locale());
如果测试说这里的设置都是正确的,那么问题可能来源于创建窗口的过程中被某个依赖库修改了,那可以尝试将 setlocale 放到 MPVCore::init() 中:
void MPVCore::init() {
+ setlocale(LC_NUMERIC, "C");
this->mpv = mpv_create();
按楼上加的测试是正常的
16:45:28.611[INFO] CURRENT_DESKTOP: DEFAULT
16:45:28.612[INFO] wiliwili
16:45:28.612[INFO] C
16:45:28.612[INFO] check_locale1: true
16:45:28.612[INFO] C
16:45:28.612[INFO] check_locale2: true
但是wayland环境下仍然会像1楼一样的报错。
ps:cmake参数加 -DGLFW_BUILD_WAYLAND=ON -DGLFW_BUILD_X11=OFF
在x11下,现在这个setlocale是起作用的,不会崩溃。
@Eitetsu0 我上面的最后一段话,“如果在MPVCore::init()里面进行测试还是一样的吗?”
这个暂时还没试。这几天得了重感冒,刚刚又被拉医院来挂水了。。我晚上回去再试一下。在 2023年11月24日,16:55,xfangfang @.***> 写道: @Eitetsu0 我上面的最后一段话,“如果在MPVCore::init()里面进行测试还是一样的吗?”
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>
好的,还是身体要紧,先好好休息。 对于这个问题我感觉加在mpv init里应该就能解决了
加 MPVCore::init()
里试了一下,可以正常播放了。:ok_hand:
感谢反馈,我稍后调整一下就行啦,那这个issue先关闭了
重新编译了一遍还是一样。 是依赖更新了接口吗?求适配。