从 C++ 中调用 Go 函数

主要观点:程序员有时需让本不应互操作的两个系统协同工作,如 C++和 Go 调用函数,本文记录了相关成果及项目设置等。
关键信息:

  • 项目设置流程:用 Go 工具链将 Go 文件编译为存档,再用 C++编译器链接 C++代码与编译后的存档。
  • 简单示例:创建lib.gomain.cpp,包裹 Go 标准库方法并导出,从 C++调用,展示 Go 类型在 C 中的使用及输出。
  • 网络请求与传递字符串:在lib.go实现Request方法,工具链生成类型定义,在 C++中创建实例并传递调用。
  • Go 例程:展示 Go 的并发模型,在lib.go中实现Routines方法,在 C++中调用并创建 1024 个例程。
    重要细节:
  • 编译 Go 文件为存档命令:go build -buildmode=c-archive -o lib.a lib.go
  • 编译 C++文件并链接存档命令:g++ -Wall main.cpp lib.a -o main
  • 导出的 Go 函数需以大写字母开头且有注释注明调用名。
  • GoFloat64等类型定义及在 C++中的使用。
  • lib.h中相关字符串类型定义及使用。
  • 在 C++中创建GoString实例并传递给Request函数。
  • 在 C++中调用Routines方法创建多个 Go 例程。
阅读 10
0 条评论