如何正确编译一个包含C代码的Golang项目[关闭]

njthzxwz  于 2023-05-11  发布在  Go
关注(0)|答案(1)|浏览(160)

**关闭。**这个问题是not reproducible or was caused by typos。目前不接受答复。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
我开始用Golang写一个项目,但很快就遇到了一个问题。我需要从我的代码连接到硬件,我有一个驱动程序和供应商提供的Golang Package 器。 Package 器连接的描述说,你需要把代码放在项目的src目录中(我不使用这样的目录,但我把文件放在目录中。/internal/fptr 10通过包名和在我的main.go它被成功导入)。我在IDE GoLand中看到了这个包中的方法,但是当我试图编译项目时(我调用了第一个应该创建驱动程序示例的函数,名为New())-我得到了错误:fptr10.New()undefined.在 Package 器目录中有两个用C编写的头文件,我知道它们有问题,但我不知道如何正确编译它。
整个项目以及库本身都可以在https://github.com/Natrix31/KKTWatcher P.S.上获得:我在Windows下工作
我尝试从IDE编译项目,并从命令行使用go build和go install,但结果是相同的。程序无法编译并给出错误:New()undefined

cnjp1d6j

cnjp1d6j1#

在这种情况下,你可以将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 .

相关问题