当前位置: 首页 > 面试题库 >

我可以在Java Web服务中使用用C编写的api吗?

汪思博
2023-03-14
问题内容

我找到了要在Java应用程序中使用的开源库。该库是用C编写的,并且是在Unix /
Linux下开发的,我的应用程序将在Windows上运行。它是一个主要包含数学函数的库,据我所知,它不使用任何与平台相关的东西,它只是非常基本的C代码。而且,它也不大,少于5,000行。

在我的应用程序中使用库的最简单方法是什么?我知道这里有JNI,但这涉及到找到一个编译器来在Windows下编译该库,了解JNI框架的最新信息,编写代码等。可行,但并不那么容易。有更容易的方法吗?考虑到库的大小,我很想将其转换为Java。有什么工具可以帮助您吗?

编辑

最后,我将需要的库部分翻译成Java。到目前为止,它大约占库的10%,尽管它可能会随着时间的推移而增加。C和Java非常相似,因此只花了几个小时。主要困难是修复翻译错误中引入的错误。

感谢大家的帮助。提出的解决方案似乎都很有趣,当我需要链接到较大的库时,我将对其进行研究。对于一小段C代码,手动翻译是最简单的解决方案


问题答案:

最好的选择可能是喝一本好书(K&R:C编程语言)喝杯茶,然后开始翻译!我对信任翻译程序会持怀疑态度,但往往不是最好的翻译员自己!如果您执行此操作,则说明已完成,而无需继续进行此操作。如果该库是开源的,可能会有些复杂,您需要仔细检查许可证。要考虑的另一点是,翻译中总会有一些风险和潜在错误,因此可能有必要考虑编写一些测试以确保翻译正确。

没有JAVA等价的Math函数吗?

正如您自己所评论的那样,JNI方法是可行的,因为对于交流编译器,您可能会使用“ Bloodshead Dev-c
++”可能有效,但在大约5000行的情况下需要付出很多努力。



 类似资料:
  • 我有一个桌面应用程序,可以在REST界面上使用GMAIL API阅读邮件。我想使用服务帐户,这样我们就可以下载邮件使用域设置和用户交互是空的。我成功地创建了Gmail服务实例,但当我尝试访问任何Gmail API方法,比如获取邮件列表或任何其他方法时,我会遇到一个异常,说: 谷歌。API。啊。OAuth2。响应。TokenResponseException:错误:“访问被拒绝”,描述:“请求的客户

  • 问题内容: 我已经搜索过网络,到目前为止,我所看到的是您可以一起使用和含义: 要么 是有效的,但是当我使用此代码时,得到的是: 对于第一个,除了与相同。对于第二个。 问题是什么?我不能使用和在一起?还是正常?是我可以检查连接是否全部有效的方法吗?() 问题答案: 不,你不能使用和在一起。它们是独立的API,它们创建的资源彼此不兼容。 虽然有一个。

  • 问题内容: 我正在研究过去1年的反应。我们遵循的约定是在数据到达后进行API调用,获取数据和setState。这将确保组件已安装并且设置状态将导致重新渲染该组件,但我想知道为什么我们不能在或中设置setState。 官方文件说: 在挂载发生之前立即调用componentWillMount()。在render()之前调用它,因此在此方法中设置状态不会触发重新渲染。避免在此方法中引入任何副作用或订阅。

  • 问题内容: 在昨天发布的另一个问题中,我对如何在Windows中将Python脚本作为服务运行提供了很好的建议。我唯一想知道的是:Windows如何了解可以在本机工具(“管理工具”中的“服务”窗口)中管理的服务。即 在Windows下,等效于在Linux下将启动/停止脚本放在/etc/init.d中的Windows是什么? 问题答案: 与Windows中大多数“可感知”的东西一样,答案是“注册表”

  • 问题内容: 我知道Python提供了API,因此您可以在C代码中调用Python解释器,但是我想要的却是相反的。 我的程序需要使用一些C API,所以代码必须用C编写。但是我也想用Python打包程序。这意味着我想在Python中调用这些C函数或可执行文件。那可能吗? 如果我希望C代码成为一个库,这意味着我将它与Python 中的可能的链接一起使用,该怎么做?那可能吗?如果我将C代码写入可执行文件

  • 请问我是否有可能在Spring Cloud中使用kubernetes而不是Eureka服务器?我问的原因是我们的环境中已经有了库伯内特斯,我知道库伯内特也提供服务发现,所以我不想为了服务发现目的启动尤里卡服务器。如果我能用库伯内取代尤里卡,那就太好了。