主要观点:程序员有时需让本不应互操作的两个系统协同工作,如 C++和 Go 调用函数,本文记录了相关成果及项目设置等。
关键信息:
- 项目设置流程:用 Go 工具链将 Go 文件编译为存档,再用 C++编译器链接 C++代码与编译后的存档。
- 简单示例:创建
lib.go
和main.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 例程。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。