cgo

golang與C有著千絲萬縷的聯(lián)系叽躯,go代碼中可以調(diào)用C代碼
由于項(xiàng)目需要财边,新使用的golang語言需要調(diào)用C語言寫的加解密函數(shù),所以用到了cgo险毁,在此記錄一點(diǎn)使用心得

如何調(diào)C代碼

非常簡單制圈,只需要兩步

  1. 在golang代碼開始部分(package xxx之后),添加注釋畔况,注釋中編寫需要使用的C語言代碼
  2. 緊挨著注釋結(jié)束鲸鹦,另起一行增加import "C",注意跟注釋中的C代碼緊挨跷跪,不要有空行馋嗜,且不要跟其他golang的import放在一起

這樣在golang語言的正文中就可以用C.xxx的方式調(diào)用注釋中的C代碼了

demo
package main

// #include <stdio.h>
// #include <stdlib.h>
/*
void print(char *s) {
    printf("print used by C language:%s\n", s);
}
*/
import "C" //和上一行"*/"直接不能有空行或其他注釋

import "unsafe"

func main() {
    s := "hello"
    cs := C.CString(s)
    defer C.free(unsafe.Pointer(cs))
    C.print(cs)
}
原理

其實(shí)cgo就是先由編譯器識(shí)別出import "C"的位置,然后在其上的注釋中提取C代碼吵瞻,最后調(diào)用C編譯器進(jìn)行分開編譯

keypoint

使用cgo要點(diǎn)我覺得有兩個(gè)

  1. golang和C直接的類型轉(zhuǎn)換
  2. 靜態(tài)庫和動(dòng)態(tài)庫的鏈接
    補(bǔ)充一點(diǎn)當(dāng)時(shí)業(yè)務(wù)中遇到的問題葛菇,要鏈接的動(dòng)態(tài)庫文件,不知道相對(duì)路徑怎么取橡羞,后來找到了解決辦法:${SRCDIR}

When the cgo directives are parsed, any occurrence of the string ${SRCDIR} will be replaced by the absolute path to the directory containing the source file.

package aes

/*
#cgo LDFLAGS: -L${SRCDIR} -lyourfile -ldl
#include <stdio.h>
#include <stdlib.h>
#include "yourcode.h"
*/
import "C"

......

掌握了這兩點(diǎn)眯停,應(yīng)該就夠用了,具體細(xì)節(jié)就不在這里寫了卿泽,請(qǐng)參考官方文檔

Reference
http://cholerae.com/2015/05/17/%E4%BD%BF%E7%94%A8Cgo%E7%9A%84%E4%B8%80%E7%82%B9%E6%80%BB%E7%BB%93/

https://golang.org/cmd/cgo/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末莺债,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子签夭,更是在濱河造成了極大的恐慌齐邦,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件第租,死亡現(xiàn)場(chǎng)離奇詭異措拇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)慎宾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門丐吓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浅悉,“玉大人,你說我怎么就攤上這事汰蜘〕鸱耄” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵族操,是天一觀的道長苛坚。 經(jīng)常有香客問我,道長色难,這世上最難降的妖魔是什么泼舱? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮枷莉,結(jié)果婚禮上娇昙,老公的妹妹穿的比我還像新娘。我一直安慰自己笤妙,他們只是感情好冒掌,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蹲盘,像睡著了一般股毫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上召衔,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天铃诬,我揣著相機(jī)與錄音,去河邊找鬼苍凛。 笑死趣席,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的醇蝴。 我是一名探鬼主播宣肚,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼悠栓!你這毒婦竟也來了钉寝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤闸迷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后俘枫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腥沽,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年鸠蚪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了今阳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片师溅。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖盾舌,靈堂內(nèi)的尸體忽然破棺而出墓臭,到底是詐尸還是另有隱情,我是刑警寧澤妖谴,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布窿锉,位于F島的核電站,受9級(jí)特大地震影響膝舅,放射性物質(zhì)發(fā)生泄漏嗡载。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一仍稀、第九天 我趴在偏房一處隱蔽的房頂上張望洼滚。 院中可真熱鬧,春花似錦技潘、人聲如沸遥巴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铲掐。三九已至,卻和暖如春琉闪,著一層夾襖步出監(jiān)牢的瞬間迹炼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工颠毙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斯入,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓蛀蜜,卻偏偏與公主長得像刻两,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子滴某,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • @synthesize和@dynamic分別有什么作用霎奢?@property有兩個(gè)對(duì)應(yīng)的詞户誓,一個(gè)是 @synthes...
    筆筆請(qǐng)求閱讀 508評(píng)論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)幕侠,斷路器帝美,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • 猜想runloop內(nèi)部是如何實(shí)現(xiàn)的悼潭?一般來講庇忌,一個(gè)線程一次只能執(zhí)行一個(gè)任務(wù),執(zhí)行完成后線程就會(huì)退出舰褪。如果我們需要一...
    筆筆請(qǐng)求閱讀 420評(píng)論 0 0
  • 原告和護(hù)理人員均在坤宇建陶上班皆疹,因公司考慮到原告屬在上班途中受傷怕其主張工傷不愿為二人出具停發(fā)工資等相關(guān)證明,但銀...
    信澤7閱讀 83評(píng)論 0 0
  • 有人說占拍,佛家主張的是消極厭世的哲學(xué)略就,主張出世。而我卻不這么認(rèn)為刷喜,佛家所說的空残制,并不是什么也沒有,而是無常性空掖疮,就是...
    荷籽記憶閱讀 4,390評(píng)論 0 0