簡體   English   中英

如何使用Visual Studio編譯器使用CGO構建庫?

[英]How to build a library with cgo using visual studio compiler?

這是一個新手問題,但我似乎無法使其正常工作。

我知道我應該使用CC =,CXX =,並且我知道vs編譯器的名稱是cl,盡管我不確定對於c ++編譯器也是如此。

現在,假設兩者的編譯器名稱均為cl,則會出現錯誤:轉到build CC = cl cxx = cl --buildmode = c-shared -o ../lib/core.dll

我得到:無法加載程序包:程序包CC = cl:在以下任何位置都找不到程序包“ CC = cl”:...

另一方面,如果我嘗試不使用CC / CXX選項進行編譯,則一切正常。

總結一下:1. vs的c和c ++編譯器名稱是什么? 2.為什么在嘗試選擇將使用的編譯器時出現錯誤?

經過幾天的嘗試,似乎創建與Visual Studio一起使用的庫的唯一可行方法是:

  1. 創建一個.dll(將cgo與go 1.10+一起使用)
  2. 使用bat文件或此處提到的方法來創建存根庫以將dll連接到Visual Studio。

    • 旁注,也可以使用loadlibrary func(我沒有嘗試這樣做,因為我似乎不建議使用這種方法,因為它似乎不是推薦的方法)。

我試圖在Visual Studio中使用Liron的最新go 1.13方法使用cgo。 它的工作方式略有不同。 我無法使用提取的存根庫將dll連接到Visual Studio。 相反,我做了一些我不太了解的事情以使其起作用:

  1. 使用c共享構建模式創建一個.dll(帶有go 1.13和gcc編譯器)。
  2. 使用c-archive構建模式創建.lib。
  3. 使用.lib進行編譯,並使用.dll訪問所有功能。 如果我直接使用.lib,則所有函數在訪問時都會停頓。 如果我使用從dll中提取的存根庫,則該程序甚至無法成功加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM