c++ - 如何使用 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. 为什么在选择要使用的编译器时出现错误?
解决方案
在玩了几天之后,似乎创建一个可以与 Visual Studio 一起使用的库的唯一可行方法是:
- 创建一个 .dll(使用 cgo 和 go 1.10+)
使用 bat 文件或HERE中提到的方法创建存根库以将 dll 连接到 Visual Studio。
- 附带说明,也可以使用 loadlibrary func(我没有尝试过,因为我试图避免这种方法,因为它似乎不是推荐的方法)。
推荐阅读
- tensorflow - 在 PASCALVOC 上从模型动物园微调 EfficientDet-D0 无法识别类别标签 1(TensorFlow 对象检测 API)
- html - 将鼠标悬停在第一个孩子无法正常工作的链接上
- vue.js - 如何将本机引导程序 5 js(modal) 连接到 nuxt.js?
- machine-learning - 如何使用 FastText 查找相似的句子(词汇不足的句子)
- multithreading - 延迟初始化和可变静态借用 [Rust]
- git - 在 git diff 中,我可以只显示没有添加的删除吗?
- ruby - 为什么/如何`gem fetch -s $source`与Bundler的`source`语句不同?
- ssl - twilio 为有效的 ssl 证书提供错误
- npm - Npm 工作区:用于开发和发布的不同“主要”属性?
- github - 如何在 github CI/CD 管道中制作工作 dotnet-lambda 工具?