繁体   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