README ¶ try-golang-cgo try-golang プロジェクトの姉妹版。cgoに関連しているサンプルが配置されています。 サンプルリスト サンプル 概要 01.CGO_Header Cのコードをコメントヘッダに記述する基本的な方法 02.Restrictions cgoの制約事項(サポートされていないCの機能など)について 03.C_int Cの int 型とGoの int 型を相互に変換する方法 04.C_struct Cの struct をGoで利用する方法 05.C_string Goの文字列をCの文字列 (C.CString) に変換する方法 06.C_GoString Cの文字列をGoの文字列 (C.GoString) に変換する方法 07.C_CBytes GoのバイトスライスをCの void* (C.CBytes) として渡す方法 08.C_GoBytes Cのデータと長さをGoのバイトスライス (C.GoBytes) に変換する方法 09.C_GoStringN 長さを指定してCの文字列をGoの文字列 (C.GoStringN) に変換する方法 10.C_ByteSliceToVoidPtr Goのバイトスライスを void* としてCに渡す方法 11.C_ByteSliceToCharPtr Goのバイトスライスを char* としてCに渡す方法 12.C_malloc Cの malloc でメモリを確保し free で解放する方法 13.C_PointerArithmetic Cのポインタ演算をGoで行う方法 14.C_ExportGoFunc Goの関数をエクスポート (//export) してCから呼び出す方法 15.C_CallGoFunctionFromC_via_FunctionPointer CからGoの関数を関数ポインタ経由で呼び出す方法 16.C_dlopen_dlsym dlopen と dlsym を使って動的に共有ライブラリを扱う方法 17.C_init_func Cのコンストラクタ関数 (__attribute__((constructor))) の動作確認 18.C_init_func_so 共有ライブラリにおけるCのコンストラクタ関数の動作確認 19.C_NULL Cの NULL ポインタの扱い方 20.C_CFLAGS_LDFLAGS CFLAGS と LDFLAGS を使って外部ライブラリをリンクする方法 21.C_CC 使用するCコンパイラを CC で指定する方法 22.C_SRCDIR SRCDIR を使って別ディレクトリのCソースファイルをビルド対象に含める方法 23.C_FixedSizeCharArrayToPointer Cの固定長文字配列をポインタとして扱う方法 24.C_Using_cgo_Handle cgo.Handle を使ってGoの値を安全にCとやり取りする方法 25.C_struct_not_typedef typedef されていない struct (struct タグ名) の扱い方 26.C_sizeof_struct Cの struct のサイズをGoで取得する方法 27.C_string_list CとGoの間で文字列の配列(char**)をやり取りする方法 28.C_Call_Go_sharedlib Goで共有ライブラリ (.so) を作成しCから呼び出す方法 29.C_memcpy Cの memcpy を利用してメモリをコピーする方法 30.C_static_link_library 静的ライブラリ (.a) をリンクする方法 31.C_callback Goの関数をCにコールバックとして渡す(基本的なイディオム) 32.C_callback_safe_way Goの関数をCにコールバックとして渡す(Cのtypedefを利用する方法) 参考情報 C? Go? Cgo! Go Wiki: cgo cmd/cgo runtime/cgo cgoを使ったCとGoのリンクの裏側 (1) cgoを使ったCとGoのリンクの裏側 (2) ebitengine/purego JupiterRider/ffi Expand ▾ Collapse ▴ Directories ¶ Show internal Expand all Path Synopsis 01.CGO_Header 02.Restrictions 03.C_int 04.C_struct 05.C_string 06.C_GoString 07.C_CBytes 08.C_GoBytes 09.C_GoStringN 10.C_ByteSliceToVoidPtr 11.C_ByteSliceToCharPtr 12.C_malloc 13.C_PointerArithmetic 14.C_ExportGoFunc 15.C_CallGoFunctionFromC_via_FunctionPointer 16.C_dlopen_dlsym dlopen 17.C_init_func 18.C_init_func_so 19.C_NULL 20.C_CFLAGS_LDFLAGS goapp command 21.C_CC 22.C_SRCDIR 23.C_FixedSizeCharArrayToPointer 24.C_Using_cgo_Handle 25.C_struct_not_typedef 26.C_sizeof_struct 27.C_string_list 28.C_Call_Go_sharedlib 29.C_memcpy 30.C_static_link_library 31.C_callback 32.C_callback_safe_way Click to show internal directories. Click to hide internal directories.