Dalam Go 1.5, ciri -buildmode=c-archive telah diperkenalkan untuk merapatkan kod Go kepada bukan Go persekitaran. Dengan ciri ini, anda boleh menyepadukan kod Go ke dalam projek C sedia ada, membolehkan anda mengagihkan tugas peringkat lebih tinggi kepada Go yang lebih verbose.
Untuk membuat Go. fungsi tersedia untuk kod C, anda mesti mengeksportnya secara eksplisit menggunakan komen //eksport khas.
package main import ( "C" "fmt" ) //export PrintInt func PrintInt(x int) { fmt.Println(x) } func main() {}
Menyusun kod Go sebagai perpustakaan boleh panggil C memerlukan penggunaan bendera -buildmode=c-archive.
go build -buildmode=c-archive foo.go
Arahan ini menjana perpustakaan statik (foo.a ) dan fail pengepala (foo.h) yang mengandungi pengisytiharan fungsi yang dieksport.
Dalam projek C anda, masukkan fail pengepala yang dijana dan gunakan fungsi yang disediakan seperti berikut:
#include "foo.h" int main(int argc, char **argv) { PrintInt(42); return 0; }
Untuk menyusun atur cara C, gunakan bendera -pthread untuk sokongan benang yang betul.
gcc -pthread foo.c foo.a -o foo
Menjalankan boleh laku kini akan mencetak yang dimaksudkan integer (42) ke konsol.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanggil Fungsi Go daripada Program C Menggunakan `-buildmode=c-archive` Go 1.5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!