首页 > 解决方案 > 如何使用 Visual Studio 编译器使用 cgo 构建库?

问题描述

这是一个新手问题,但我似乎无法让它发挥作用。

我知道我应该使用 CC=、CXX= 并且我知道 vs 编译器名称是 cl,尽管我不确定 c++ 编译器是否也是如此。

现在假设两者的编译器名称都是 cl 我得到了错误: go build CC=cl cxx=cl --buildmode=c-shared -o ../lib/core.dll

我得到:无法加载包:包CC = cl:在以下任何一个中找不到包“CC = cl”:...

另一方面,如果我尝试在没有 CC / CXX 选项的情况下进行编译,那么一切正常。

所以总结一下:1. vs的c和c++编译器名称是什么?2. 为什么在选择要使用的编译器时出现错误?

标签: c++cvisual-studiocgo

解决方案


在玩了几天之后,似乎创建一个可以与 Visual Studio 一起使用的库的唯一可行方法是:

  1. 创建一个 .dll(使用 cgo 和 go 1.10+)
  2. 使用 bat 文件或HERE中提到的方法创建存根库以将 dll 连接到 Visual Studio。

    • 附带说明,也可以使用 loadlibrary func(我没有尝试过,因为我试图避免这种方法,因为它似乎不是推荐的方法)。

推荐阅读