go語言cgo C與Go互調

2021-07-10 15:05:27 字數 1285 閱讀 6277

見**:

foo.h

void foo();

void callgo();

void hello();

void print_x(char *str);

foo.c

/*

gcc -c foo.c

ar rv libfoo.a foo.o

*/#include

"foo.h"

#include

"stdio.h"

#include

"_obj/_cgo_export.h" //此檔案為cgo自動生成,內容包含go語言的型別及相關函式宣告。

void foo()

void callgo()

void hello()

void print_x(char *str)

test.go

packagemain

import(

"fmt")/*

#include

#include

#include "foo.h"

*/import"c"

import"unsafe"

funcrandom() int

funcseed(i int)

//注意,此處必須用export 「函式名「」 匯出,這樣才能被c呼叫。

//export mygofunction

funcmygofunction(arg1, arg2 int) int64

funcmain()

構建步驟:

1.

//在$(gopath)/src中執行以下命令,生成 _cgo_export.h

//go tool cgo test.go

注意: 以上命令將在$(gopath)/src中生成_obj目錄, 裡面主要包含_cgo_export.h

2. //在$(gopath)/src中,執行以下命令,生成可執行檔案test

go build

若以上兩部都無錯, 則成功。

注意: _obj 是cgo為 go build生成的, go build將自動去那裡找相關c宣告。

**放在: 

go語言與c語言的相互呼叫

由於工作原因,需要實現go語言與c語言的相互呼叫。由於go語言與c語言有著千絲萬縷的曖昧關係,兩者之間的呼叫可以通過語言層面實現。下文是對此的總結。go語言呼叫c語言 以下為乙個簡短的例子 package main include include void print char str import...

Go 初學Go語言

馬上要去實習了,要開始實戰了 今天在這總結一些基礎用法,方便後面自己查閱 總結的參考資料為go by example,一邊複習一邊記錄 go by example var a string initial var b,c int 1 2 一次宣告多個 var d true 自動推斷型別 var e ...

Go語言之GO 語言常量

相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。常量的宣告和變數宣告非常類似,只是把var換成了const,常量在定義的時候必須賦值。const pi 3.1415 const e 2.7182宣告了pi和e這兩個常量之後,在整個程式執行期間它們的值都不能再發生變化了。多個常...