加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:41:39 所属栏目:Java 来源:网络整理
导读:我正在开发一个库,该库将用Go编写并编译成C共享库,因此可以通过 Python,Node.JS,Java和Ruby等语言调用它. 我刚刚意识到回调时会出现问题.如何回调至少是上述语言之一的调用代码?有没有一种方法可以做到这一点,还是我需要在Go方面为每种语言实现特定的东西?
我正在开发一个库,该库将用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中生成并以其他语言读取的数据.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读