我打算编写一个跨平台应用程序,其大多数功能在所有平台(Linux,OS X,Windows,iOS,Android)上共享。 这些主要是辅助函数(计算,内部列表,网络等),所以我认为将这些函数放在库中可以很方便,我可以为每个平台编译,同时仍然可以为每个平台单独创建自定义UI。
我提到的那些平台上的主要语言是 C,Objective-C,C#和Java 。所有这些语言都支持直接或通过内部包装器从库中调用C-API函数。由于我不想在C / C ++中编写80%的应用程序代码,因此我搜索并找到了 Go 。
cgo
似乎是我问题的解决方案
我目前的想法是在Go中编写核心库,然后为每个平台编译它,但是,调用go build
根本不会创建任何内容。
我import "C"
。
我已声明func
并在之前添加了//export
语句。
我读到了gccgo
,但人们一直指出它已经过时,不应该使用。
也许任何人都可以指出我的想法中的缺陷或帮助我将这个库文件放在一起。提前谢谢。
答案 0 :(得分:0)
如果您的目标是构建一个可以链接到任意C,Objective-C或Java程序的库,那么您对当前发布的标准工具链不满意。有计划在未来改变它,但目前Go运行时不能嵌入到其他应用程序中。
虽然cgo
允许您导出要从C调用的函数,但这对于从Go调用的C代码需要回调到Go的情况非常有用。