cgo的簡單嘗試

2021-10-06 22:21:36 字數 860 閱讀 4535

研究ethereum原始碼的時候,執行其橢圓曲線簽名演算法提示我錯誤,說是找不到gcc。

然後我就安裝好gcc後才執行成功。我想這是用go原始碼呼叫c**啊,好像是乙個叫cgo的功能來者。好奇心的驅動下,寫了兩個demo感受了一下。

package main

/*#include int sum(int a, int b)

*/import "c"

import "fmt"

func main()

**如上,直接執行即可看到效果。

這裡的import "c"不是把包匯入進來,這裡的c是命名空間的概念。要把c源**用注釋符號注釋起來,並且要緊跟著import "c",中間不能有空行,不然會報錯。空行會報錯這個挺無厘頭的,感覺更像是golang的bug。

#ifndef _foo_h

extern int count;

void foo();

#endif

foo.c

#include #include "foo.h"

int count=2;

void foo()

main.go

package main

//#include "foo.h"

import "c"

import "fmt"

func main()

這裡有點特別,不能直接執行go run main.go,而是要main.go的目錄下執行

go build

就會生成可執行檔案,然後在命令列下執行該可執行檔案即可。

(全文完)

ThreeJs 一 簡單的嘗試

附webgl教程 webgl 自學網 就好比jquery對js進行封裝一樣。等我們有足夠的開發基礎之後,也可以深入去了解底層知識,不過目前這些知識並不是我們學習的重點。threejs是使用js語言編寫的,屬於webgl第三方庫,threejs提供了很多三維顯示的api,而利用這些api我們就能夠建立...

LeetCode初嘗試 簡單

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 class solution return resul...

簡單嘗試 express 使用 websocket

node 使用 express 框架 先安裝 express 和 express ws yarn add express express ws服務端server.js var express require express var expressws require express ws expre...