java – 将c-shared库回调转换为其他语言

前端之家收集整理的这篇文章主要介绍了java – 将c-shared库回调转换为其他语言前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个库,该库将用Go编写并编译成C共享库,因此可以通过 Python,Node.JS,Java和Ruby等语言调用它.

我刚刚意识到回调时会出现问题.如何回调至少是上述语言之一的调用代码?有没有一种方法可以做到这一点,还是我需要在Go方面为每种语言实现特定的东西?

更新清晰度:

我已经能够将Go构建为库并执行其他语言(如Java和Python)的代码.

我的问题特别涉及go以异步方式运行某些东西并需要回调给调用者(即Java,Python)的情况.

解决方法

不同编程语言之间接口的通用语言是通过C.你可以使用像 cgo这样的东西来使你的Go代码可以通过C访问,然后使用Python,Java等中的C或“本机”绑定来调用它.

通常开发人员只会为大型维护良好的项目经历这么多麻烦.如果您有一个个人项目,如果性能不是一个问题,我建议通过json(用于Web语言)或stdout / stderr管道(可能更多你想要的)进行通信.您可以从Ruby向stdout打印命令,让Go代码处理请求并在其stdout上报告.虽然有时候很难将输入和输出都输送到另一个程序. CGI程序以这种方式工作,产生其他语言的解释器以及管道数据到该解释器.

更新:如果要传递对象,则很难从Go回调Java / Python /任何语言运行库;我想这将需要根据绑定API(Java,Python)进行不同的制作.如果你有绑定,也许你已经解决了这个问题?如果你不能将任何参数传递给回调可能会更容易(即它基本上是一个计时器回调).最小化需要在Go中生成并以其他语言读取的数据.

猜你在找的Java相关文章