gpt4 book ai didi

c - 目前有哪些方法可以让您在 C 中调用 Go 函数?

转载 作者:IT王子 更新时间:2023-10-29 01:03:23 25 4
gpt4 key购买 nike

我见过很多不同的方法可以做到这一点,但就必须使用大量包装器和回调而言,它们似乎都不理想。有没有一种简单的方法可以做到这一点?

例如,我们有这个:

//foo.go

package foo

import "C"

//export SayFive
func SayFive() int {
return 5
}

现在这已经被精简到最低限度,此时我想做的就是在 C 中调用 SayFive 函数。

但是,不在这个文件的顶部。能够做到这一点非常简单和有用,但我正在寻找这样的方法:

//foo.c

#include <stdio.h>

int main() {
int a = SayFive();
}

我在与上面类似的示例中看到,#include "_cgo_export.h" 完全有道理,但是当我这样做并尝试编译它时,它失败了.

谁能解释一下允许我们这样做的整个过程?

最佳答案

您可以从 Go 调用 C,也可以从 C 调用 Go,但只能在 Go 程序的框架内。

因此,您的带有 main() 的 C 程序示例将不起作用,因为那会从 C 程序的框架内调用 Go。

换句话说,Go 无法创建可以静态或动态链接到 C 程序的对象。

所以你必须把你想做的事情颠倒过来,让 Go 程序成为主人,并从中调用 C 程序部分。也就是说带有main()函数的程序一定是Go程序。

希望这是有道理的!

关于c - 目前有哪些方法可以让您在 C 中调用 Go 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23169238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com