Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengintegrasikan Kod Go ke dalam Projek C Sedia Ada?

Bagaimanakah Saya Boleh Mengintegrasikan Kod Go ke dalam Projek C Sedia Ada?

Barbara Streisand
Lepaskan: 2024-12-20 17:23:14
asal
498 orang telah melayarinya

How Can I Integrate Go Code into Existing C Projects?

Menyepadukan Kod Go ke dalam Projek C Sedia Ada

Sebelum Go 1.5, menyepadukan kod Go ke dalam projek C adalah mencabar. Walau bagaimanapun, dengan pengenalan bendera -buildmode=c-archive, adalah mungkin untuk memanggil kod Go dari dalam program C.

Untuk menjana fail pengepala dan arkib yang diperlukan untuk memaut dengan kod C, ikuti ini langkah:

  1. Buat fail sumber Go dengan fungsi yang anda ingin dedahkan kepada C.
  2. Tandakan fungsi yang dieksport dengan //eksport komen.
  3. Gunakan arahan berikut untuk membina perpustakaan statik boleh panggil C:
go build -buildmode=c-archive <Go_source_file>.go
Salin selepas log masuk

Ini akan menjana arkib (mis., foo.a ) dan fail pengepala (cth., foo.h).

Dalam kod C anda, masukkan fail pengepala yang dijana dan gunakan fungsi yang dieksport mengikut konvensyen penamaan CGo. Contohnya:

#include "foo.h"

int main(int argc, char **argv) {
    PrintInt(42);
    return 0;
}
Salin selepas log masuk

Untuk menyusun atur cara C, gunakan arahan seperti:

gcc -pthread foo.c foo.a -o foo
Salin selepas log masuk

Nota Tambahan:

  • Fungsi utama dalam fail sumber Go diperlukan, walaupun kosong.
  • Gunakan pilihan -pthread semasa menyusun Atur cara C kerana masa jalan Go menggunakan benang.
  • Anda boleh menentukan nama fail arkib dan pengepala output masing-masing menggunakan bendera -o dan -I, semasa membina pustaka.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengintegrasikan Kod Go ke dalam Projek C Sedia Ada?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan