我最近問了這個(gè)問題https://softwareengineering.stackexchange.com/questions/129076/go-instead-of-cc-with-cgo,得到了一些非常有趣的輸入。但是我的問題有一個(gè)錯(cuò)誤:我認(rèn)為cgo也可以用來訪問c ++代碼,但這是不可能的。相反,您需要使用SWIG。go常見問題解答說:“ cgo程序提供了“外部函數(shù)接口”的機(jī)制,以允許從Go代碼安全地調(diào)用C庫。SWIG將此功能擴(kuò)展到了C ++庫。”我的問題: 是否可以使用SWIG + Go訪問高級Q ++框架(例如QT)并提高生產(chǎn)力?我想使用Go作為一種“腳本語言”來利用c ++庫。你有去圍棋的經(jīng)驗(yàn)嗎?有我要注意的陷阱嗎?更新/回答:我也在IRC上問過這個(gè)問題,我認(rèn)為問題已經(jīng)解決了:SWIG是連接其他語言的c ++代碼的一種非常簡潔的方法。可悲的是,將c ++的類型匹配到類似go的東西可能非常復(fù)雜,并且在大多數(shù)情況下,您必須自己指定映射。這意味著SWIG是利用現(xiàn)有代碼庫重用已經(jīng)編寫的算法的好方法。但是,映射像Qt這樣的庫要花很多時(shí)間。注意,這肯定是可能的,但您不想這樣做。那些使用go進(jìn)行GUI編程的人可能想要嘗試go-gtk或wxWidgets的go版本。
2 回答

翻過高山走不出你
TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
是否可以?是的。
能否在相當(dāng)短的時(shí)間內(nèi)完成?不。
如果回頭看一下采用大型框架并試圖在其上放置抽象層的其他項(xiàng)目,您會發(fā)現(xiàn)大多數(shù)都是“不完整的”。您可能可以做一個(gè)相當(dāng)不錯(cuò)的開始,并準(zhǔn)備好一些初始包裝器,但是通常情況下,即使要使用自動工具(盡管有很多幫助,但可以從來沒有一個(gè)完整的解決方案)。然后...您會感到討厭,剩下的10%會讓您永遠(yuǎn)死掉(好吧,至少真的很長一段時(shí)間)。然后首先考慮它是如何改變的目標(biāo)。例如,Qt將發(fā)布下一個(gè)主要重寫。
通常,堅(jiān)持設(shè)計(jì)框架所用的框架語言是最安全的。盡管許多項(xiàng)目本身都具有語言擴(kuò)展。例如,對于Qt,您應(yīng)該簽出QML,QML提供(以及許多其他功能)與Qt的javascript綁定。有點(diǎn)。但是它可能滿足您的“腳本”要求。
- 2 回答
- 0 關(guān)注
- 297 瀏覽
添加回答
舉報(bào)
0/150
提交
取消