1

我正在做一个项目,我有一些传感器,我希望它们通过 USB 连接到 PC。现在他们写了一个用c编写的windows lib,所有函数都使用c的cdecl调用约定,我必须确保如果我用其他语言(java!)编程,调用约定是给定的。

所以我研究了一下,发现了一些在java中绑定dll和或使用JNA的教程。但这对我来说都是新事物,我想确定它是可能的(也许是一个例子)-该设备并不便宜,我想在购买之前知道这一点。

4

1 回答 1

0

您可以从 Java 调用 C 代码 - 这里没有问题。

然后,如果你的 C 例程中有一些非常具体的东西,你总是可以通过包装器。

看看这里。

http://jnicookbook.owsiak.org/recipe-No-018/

在此示例中,您调用的 C 代码反过来又调用另一个库。

您也可以通过将 JNI 代码与其他库链接来实现。像这儿:

https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo023

有很多选择。当谈到 JNI 与 JNA 时。确保 JNA 足够高效。一般来说,JNA 往往较慢。看看这里:

https://github.com/mkopsnc/keplerhacks/tree/master/jnijna

希望这可以帮助。

我不在这里发布代码 - JNI Cookbook 中的所有示例都可以从 github 获得。

于 2017-04-06T18:07:41.353 回答