可借助cgo實現go語言對c的呼叫,下面展示幾種呼叫方式。
c**內容如下:
#include #include #include char* test_hello(const char* name)
int main()
執行結果:
yuyong -> hello
go**如下:
package main
/*#include #include #include char* test_hello(const char* name)
*/import "c"
import "fmt"
func main()
執行結果同c**。
在go main函式所在檔案的同級目錄下新建兩個檔案
test.h
#ifndef test_yuyong_h
#define test_yuyong_h
#include #include #include char* test_hello(const char* name);
#endif
test.c
#include"test.h"
char* test_hello(const char* name)
go**如下:
package main
/*#include"test.c"
*/import "c"
import "fmt"
func main()
結果與1相同。
這兩種方式呼叫c是最簡單最基本的,下面我們嘗試借助.so檔案實現go呼叫c/c++**。
將上面的c檔案(test.h和test.c)編譯成動態鏈結庫libtest.so
然後在go main函式所在檔案的同級目錄下新建兩個目錄,lib和include
其中lib裡面放入libtest.so,include裡面放入test.h
go**如下:
package main
/*#cgo cflags : -i./include
#cgo ldflags: -l./lib -ltest
#include "test.h"
*/import "c"
import "fmt"
func main()
配置環境變數
export ld_library_path=/home/yong/desktop/cgo-test20180723001/test_001/lib
其中ld_library_path就是libtest.so所在目錄
如果用的是goland則可以配置如下:
新增,name=ld_library_path,value=/home/yong/desktop/cgo-test20180723001/test_001/lib
執行結果同上。
日本語 第十八課
第十八課 攜帯電話 小 手機便的很小了 音 大 電視的聲音便大了 息子 醫者 兒子成為了醫生 部屋 綺麗 請把屋子收拾乾淨 風邪 感冒怎麼樣了啊?昨夜 薬 飲 昨天吃藥了,但是還沒有好轉 旅行 荷物 軽 旅行箱還是輕點好.軽 是啊,盡可能的變輕了.嬢 你的女兒多大了?今年 七歳 今年,已經7歲了.啊...
孫鑫 第十八課ActiveX控制項
說明 activex控制項有三個要素 屬性,方法,事件 屬性比如button控制項的顯示文字,名字等。屬性值包括stock屬性和custom屬性,其中stock屬性為控制項固有屬性,即mfc封裝的屬性,例如前景色 背景色等。而custom屬性則為使用者自己定製的屬性,在新增custom屬性時要指定外...
第十八課 物件的構造(中)
class test test t 定義物件並且呼叫建構函式 int main 二 建構函式的呼叫 include class test test int v int main test test int v v 1 test int v v 2 i 100 初始化和賦值不同 int i 1 初始化...