我开始用 Golang 编写一个项目,但立即遇到了问题。我需要从我的代码连接到硬件,我有一个驱动程序和一个供应商提供的 Golang 包装器。包装器连接的描述说需要将代码放在项目的 src 目录中(我不使用这样的目录,但我将文件按包名放在目录 ./internal/fptr10 中并在我的main.go 已成功导入)。我在 IDE GoLand 中看到了这个包中的方法,但是当我尝试编译该项目时(我调用了第一个应该创建驱动程序实例的函数,称为 New()) - 我收到错误:fptr10。 New() 未定义。包装器目录中有两个用C编写的头文件,我知道它们有问题,但我不明白如何正确编译它。
整个项目以及库本身都可以在 https://github.com/Natrix31/KKTWatcher 上找到 P.S.:我在 Windows 下工作
我尝试从 IDE 编译项目,并使用 go build 和 go install 从命令行编译项目 但结果是一样的。程序无法编译并给出错误:New() undefined
对于这种情况,您可以将 c 代码放入 go 模块中,只需确保您的平台中安装了 c 编译器,并使用序言注释进行引用。
main.go
/* #include <stdio.h> #include <math.h> #include "calc.h" */ import "c" func main() { fmt.println(c.add(1, 2)) }
calc.c
:
#include "calc.h" int add(int a, int b) { return a + b; }
calc.h
:
int add(int a, int b);
go 默认启用 cgo,因此只需构建它即可:
go build -o main.out .
以上是如何使用包含 C 代码的包正确编译 Golang 项目的详细内容。更多信息请关注PHP中文网其他相关文章!