Visual Studio 2015에서 gtk + 3.22를 빌드하는 데 많은 시간을 보냈습니다. 마지막으로 빌드되었지만 작은 GUI 프로그램이 실패했습니다. gtk를 초기화한다. 다음과 같이 오류가 표시됩니다.무엇이 잘못 되었습니까? GLib-GObject-WARNING ** : 기존 유형 'PangoCairoFont'을 등록 할 수 없습니다
gtk+_gtk_test.exe:15980): Gtk-WARNING **: Could not find the icon 'window-minimize-symbolic-ltr'. The 'hicolor' theme
was not found either, perhaps you need to install it.
You can get a copy from:
http://icon-theme.freedesktop.org/releases
(gtk+_gtk_test.exe:15980): GLib-GObject-WARNING **: cannot register existing type 'PangoCairoFont'
(gtk+_gtk_test.exe:15980): GLib-GObject-CRITICAL **: g_type_interface_add_prerequisite: assertion 'G_TYPE_IS_INTERFACE (interface_type)' failed
(gtk+_gtk_test.exe:15980): Glib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed
첫 번째 경고는 실행 파일이 아이콘 파일을 찾을 수 없기 때문에 존재합니다. 나는 이미 이것을 고치는 방법을 알아 냈다. 그러나 두 번째 경고가 해결되지 않습니다. 이것은 내 첫 gtk + 프로젝트입니다. 코드를 디버깅 할 때 PangoCairoWin32Font 유형의 존재로 인해 PangoCairoFont 유형이 실패한 것으로 보입니다.
무엇이 잘못 될 수 있습니까? 조언을 감사하십시오. 프로그램의
소스 코드 :
#include <gtk/gtk.h>
void hello(GtkWidget *widget, gpointer data)
{
g_print("Hello, World\n");
}
gint delete_event(GtkWidget *widget, GdkEvent event, gpointer data)
{
/* when this fucntion returns FALSE, the delete-event
signal becomes a destroy signal*/
return FALSE;
}
void end_program(GtkWidget *widget, gpointer data)
{
/* End the main loop */
gtk_main_quit();
}
int main(int argc, char **argv)
{
GtkWindow *window;
GtkButton *button;
/* initialize Gtk+ */
gtk_init(&argc, &argv);
/* create window, set default height and width to 200px */
window = g_object_new(GTK_TYPE_WINDOW,
"default-height", 200,
"default-width", 200,
"border-width", 12,
"title", "GtkHello",
NULL);
/* add signal handlers for window */
g_signal_connect(window, "delete-event", G_CALLBACK(delete_event),
NULL);
g_signal_connect(window,
"destroy", G_CALLBACK(end_program),
NULL);
/* create button */
button = g_object_new(GTK_TYPE_BUTTON,
"label", "_Hello, World!\nClick here.",
"use-underline", TRUE,
NULL);
g_signal_connect(button,
"clicked", G_CALLBACK(hello),
NULL);
g_signal_connect_swapped(button,
"clicked", G_CALLBACK(gtk_widget_destroy),
window);
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(button));
gtk_widget_show_all(GTK_WIDGET(window));
/* start main loop */
gtk_main();
return 0;
}
프로그램 코드를 제공해 주시겠습니까? –