使用 win11 GTK3 文件选择器对话框崩溃

问题描述 投票:0回答:1

我已经在win11机器上使用MSYS2从官网安装了GTK3 3.24.38。

我正在 Windows 机器上编译一个 Linux 应用程序,除了

之外,它工作正常

gtk_file_chooser_dialog_new() 函数使系统崩溃。

我使用 minGW gcc 13.2 和 VCcode,应用程序编译正常并运行,除非文件对话框尝试打开。

代码是:

dialog = gtk_file_chooser_dialog_new ("Open File",
                    NULL,
                    GTK_FILE_CHOOSER_ACTION_SAVE,
                    "_Cancel", GTK_RESPONSE_CANCEL,
                    "_Save", GTK_RESPONSE_ACCEPT,
                    NULL);
    

GDB调试信息:

Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
0x00007ff8f6fb0137 in glib-2.0-0!g_log_structured_array ()

我认为一定有例外,但我猜在Windows系统上日志文件没有设置。

我尝试传递 0 而不是 NULL 来查看是否是 NULL 定义问题,但我仍然崩溃。

不知道如何在 Windows 中设置 GTK 的日志文件。

谢谢。多方计算

调用堆栈:

glib-2.0-0.dll!glib-2.0-0!g_log_structured_array (Unknown Source:0)
glib-2.0-0.dll!glib-2.0-0!g_log_default_handler (Unknown Source:0)
glib-2.0-0.dll!glib-2.0-0!g_logv (Unknown Source:0)
glib-2.0-0.dll!glib-2.0-0!g_log (Unknown Source:0)
gio-2.0-0.dll!gio-2.0-0!g_settings_set_int64 (Unknown Source:0)
gobject-2.0-0.dll!gobject-2.0-0!g_weak_ref_set (Unknown Source:0)
gobject-2.0-0.dll!gobject-2.0-0!g_object_new (Unknown Source:0)
gobject-2.0-0.dll!gobject-2.0-0!g_object_new_valist (Unknown Source:0)
gobject-2.0-0.dll!gobject-2.0-0!g_object_new (Unknown Source:0)
gtk-3-vs17.dll!gtk_file_chooser_native_set_cancel_label (Unknown Source:0)
gtk-3-vs17.dll!gtk_file_chooser_native_set_cancel_label (Unknown Source:0)
gtk-3-vs17.dll!gtk_file_chooser_button_set_width_chars (Unknown Source:0)
gobject-2.0-0.dll!gobject-2.0-0!g_closure_invoke (Unknown Source:0)
gobject-2.0-0.dll!gobject-2.0-0!g_signal_stop_emission_by_name (Unknown Source:0)
gobject-2.0-0.dll!gobject-2.0-0!g_signal_stop_emission_by_name (Unknown Source:0)
gobject-2.0-0.dll!gobject-2.0-0!g_signal_emit_by_name (Unknown Source:0)
gtk-3-vs17.dll!gtk_file_chooser_widget_new (Unknown Source:0)
gobject-2.0-0.dll!gobject-2.0-0!g_weak_ref_set (Unknown Source:0)
gobject-2.0-0.dll!gobject-2.0-0!g_object_setv (Unknown Source:0)
gobject-2.0-0.dll!gobject-2.0-0!g_object_set_property (Unknown Source:0)

打开文件本机对话框可以工作,但保存文件本机对话框不起作用。这有效。

native = gtk_file_chooser_native_new ("Open File",
                                      NULL,
                                      action,
                                      "_Open",
                                      "_Cancel");
windows gtk3
1个回答
0
投票

终于找到答案了。 您必须创建一个允许 gtk 查找模式的目录结构。将您的应用程序放在我创建的根目录中...

app-root-dir|
             -share|
                    -glib-2.0|
                              -schemas|

然后您可以从 gtk 构建目录复制编译后的架构:

C:\gtk-build\gtk\x64 elease\share\glib-2.0\schemas\gschemas.compiled

进入您的新应用程序架构目录。文件保存对话框不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.