为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Go 中创建可嵌入的 C-API 库?

如何在 Go 中创建可嵌入的 C-API 库?

Go
潇潇雨雨 2021-10-11 10:46:00
我打算编写一个跨平台的应用程序,它的大部分功能在所有平台(Linux、OS X、Windows、iOS、Android)上共享。这些主要是辅助函数(计算、内部列表、网络等),所以我认为将这些函数放在一个库中会很方便,我可以为每个平台编译,同时仍然能够为每个平台单独创建自定义 UI。我提到的这些平台上的主要语言是C、Objective-C、C# 和 Java。所有这些语言都支持直接或通过内部包装器从库中调用 C-API 函数。由于我不想用 C/C++ 编写 80% 的应用程序代码,我搜索并找到了Go。cgo似乎是我的问题的解决方案。我目前的想法是用 Go 编写核心库,然后为每个平台编译它,但是,调用go build根本不会创建任何东西。我import "C"。我已经声明了 afunc并添加了//export之前的声明。我读过,gccgo但人们一直指出它已经过时,不应使用。也许任何人都可以指出我想法中的缺陷或帮助我将这个库文件放在一起。提前致谢。
查看完整描述

1 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

如果您的目标是构建一个可以链接到任意 C、Objective-C 或 Java 程序的库,那么您对当前发布的标准工具链就不走运了。有计划在未来改变这一点,但目前 Go 运行时不能嵌入到其他应用程序中。

虽然cgo将允许您导出要从 C 调用的函数,但这仅在您从 Go 调用的 C 代码需要回调到 Go 的情况下才真正有用。


查看完整回答
反对 回复 2021-10-11
  • 1 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信