0

私のCの理解はかなり貧弱です。コードを読むことはできますが、何かをインクルード/ビルド/メイク/構成する方法がわかりません。これがおそらく、次の Go コードをコンパイルできない理由です。このコードは、https://developer.gnome.org/gtk3/3.0/gtk-getting-started.htmlを Go に適応させようとする私の試みです。

package main

// #cgo pkg-config: gtk+-3.0
// #include <gtk/gtk.h>
import "C"

func main() {
    C.gtk_init(nil, nil)
    window := C.gtk_window_new(C.GTK_WINDOW_TOPLEVEL)
    C.g_signal_connect(window, "destroy", C.G_CALLBACK(C.gtk_main_quit), nil)
    C.gtk_widget_show(window)
    C.gtk_main()
}

問題のある行はC.g_signal_connect(...)です。エラーは次のとおりです。

1: error: 'G_CALLBACK' undeclared (first use in this function)
1: error: 'g_signal_connect' undeclared (first use in this function)
1: note: each undeclared identifier is reported only once for each function it appears in

行を削除すると、コードが機能し、gtk ウィンドウが開きます。

これは、の多くのヘッダー ファイルに含まれている にg_signal_connect由来することがわかりました。私はそれを自分で含めようとしました:glib-object.hgtk

// #cgo pkg-config: gtk+-3.0 glib-2.0
// #include <gtk/gtk.h>
// #include <glib-object.h>

しかし、それは何も解決しませんでした。

私が間違っていることを誰かが知っていますか?

4

1 に答える 1