Go語言第十八課 CGO

2021-08-21 16:43:50 字數 1695 閱讀 4085

可借助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 初始化...