2016-05-26 23 views
0

有沒有辦法做到這一點?從Visual C++訪問Golang模塊

  1. 開發用Golang編寫的庫L1。 L1爲C語言輸出函數。
  2. 構建L1併爲Visual C++生成.lib文件。
  3. 通過調用L1中的C函數使用Visual C++代碼中的L1。
+0

是從1.5開始。 –

+0

謝謝。你會在這裏爲大家分享網址或其他內容嗎? @JiangYD –

回答

0

我從來沒有嘗試過,而且我使用Linux,但這裏是我知道的:

根據the golang documentation你可以編譯Go代碼到共享庫(見去幫助buildmode也)。

爲了能夠從c代碼中調用go功能,go function shall be exported

爲了編譯Go代碼到一個共享庫,你需要獲得去標準庫複製到共享一個太:

go install -buildmode=shared std 

這將編譯所有的轉標準代碼到libstd.so(在Linux上,該名稱可能會在Windows上更改)。

最後,你可以使用下面的命令來獲取您的共享庫:

go install -buildmode=shared -linkshared [packages] 

標準共享庫中可以找到:

GOROOT/pkg/GOOS_GOARCH_dylink/ 

,並在您的共享庫:

GOPATH/pkg/GOOS_GOARCH_dylink/ 

這是爲了進行部分。

現在,如果您想從C++項目中調用此代碼,則需要創建包裝go庫的C庫。你可以使用一些工具(我聽說過SWIG,但從未嘗試過)。

編輯:你可以做一些類似的靜態去庫,但既然你沒有指定庫類型,你會從C++代碼中使用它,我想你需要一個共享庫。