見**:
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
packagemainimport(
"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這兩個常量之後,在整個程式執行期間它們的值都不能再發生變化了。多個常...