首页 >后端开发 >Golang >如何将Go代码集成到现有的C项目中?

如何将Go代码集成到现有的C项目中?

Barbara Streisand
Barbara Streisand原创
2024-12-20 17:23:14428浏览

How Can I Integrate Go Code into Existing C Projects?

将 Go 代码集成到现有的 C 项目中

在 Go 1.5 之前,将 Go 代码集成到 C 项目中是一项挑战。但是,随着 -buildmode=c-archive 标志的引入,可以从 C 程序中调用 Go 代码。

要生成与 C 代码链接所需的头文件和存档,请按照以下步骤操作步骤:

  1. 使用要公开给 C 的函数创建一个 Go 源文件。
  2. 使用 //export 标记导出的函数
  3. 使用以下命令构建 C 可调用静态库:
go build -buildmode=c-archive <Go_source_file>.go

这将生成一个存档(例如 foo.a)和一个头文件(例如,foo.h)。

在您的 C 代码中,包含生成的头文件并使用 CGo 命名后的导出函数惯例。例如:

#include "foo.h"

int main(int argc, char **argv) {
    PrintInt(42);
    return 0;
}

要编译 C 程序,请使用如下命令:

gcc -pthread foo.c foo.a -o foo

附加说明:

  • Go 源文件中的 main 函数是必需的,即使是空的。
  • 使用 -pthread当 Go 运行时使用线程时编译 C 程序时的选项。
  • 在构建库时,您可以分别使用 -o 和 -I 标志指定输出存档和头文件名。

以上是如何将Go代码集成到现有的C项目中?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn