我有一个完全用 C 编写的项目。我只需要调用一个必须在 GO 中编码的函数。因此,我使用 cgo 构建 C 文件,然后我想使用生成的目标文件与我的主 C 项目链接。
假设我有一个foo.go
具有单个功能的文件func HelloWorld()
。我希望从我的 C 代码中执行这个函数。
所以我做了以下步骤
# go tool cgo foo.go
# cd _obj && gcc -c *.o
现在我有两个文件:
# _cgo_export.o _cgo_main.o
但是,main()
在那里以某种方式定义,我无法将这些目标文件与我的主项目(多个主项目)链接起来。
如何让 cgo 不放入虚拟主目录?还是我这样做完全错了?
编辑我需要入口点在 C 中。其他人发布的建议要求入口点在 GO 中。感谢我信任的另一个用户,我在下面发布了正确的解决方案。