c++ - 如何使用 Visual Studio 编译器使用 cgo 构建库?

标签 c++ c visual-studio cgo

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

我知道我应该使用 CC=、CXX= 并且我知道 vs 编译器名称是 cl,但我不确定它对于 C++ 编译器是否也适用。

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

我得到:无法加载程序包:程序包 CC=cl:无法在以下任何位置找到程序包“CC=cl”:...

如果另一方面我尝试在不使用 CC/CXX 选项的情况下进行编译,那么一切都会正常工作。

总结一下: 1. vs的c和c++编译器名称是什么? 2. 为什么我在尝试选择将使用哪个编译器时收到错误?

最佳答案

我尝试在最新的 go 1.13 中使用 Liron 的方法在 Visual Studio 中使用 cgo。它的工作方式有点不同。我无法使用提取的 stub 库将 dll 连接到 Visual Studio。相反,我做了一些我不太明白的事情来使其正常工作:

  1. 使用 c 共享构建模式创建 .dll(使用 go 1.13 和 gcc 编译器)。
  2. 使用 c-archive 构建模式创建 .lib。
  3. 使用.lib进行编译,并使用.dll来访问所有函数。如果我直接使用.lib,所有功能在访问时都会停止。如果我使用从 dll 中提取的 stub 库,程序甚至无法成功加载。

关于c++ - 如何使用 Visual Studio 编译器使用 cgo 构建库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50314661/

相关文章:

c++ - 运行 PTK 测试

c++ - 内部类中的广义复制构造函数

c - Tic Tac Toe,用电脑玩(随机)

c - 如何在 C 程序 (AVR) 中编写汇编 ISR?

c++ - Visual C++ "List of Libraries"含义

c++ - CPU 使用率高的 Win32 应用程序

c++ - 树莓派上的 "error: stray\255 in program"

c - 切换大小写菜单未执行,仅读取默认大小写

c# - 如何知道谁在处置我的 Bitmap 对象或处置了它?

c# - MVC4 Entity Framework - 无法隐式转换