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

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