2017-04-06 57 views
0

我正在开发一个项目,其中有一些传感器,我希望它们通过USB连接到PC。现在他们写了一个用lib编写的windows lib,并且所有函数都使用c的cdecl调用约定,而且我必须确定,如果我使用其他语言(java!)编程,则会给出调用约定。在java中使用C lib(dll),并使用特定的c调用约定cdecl

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

回答

0

您可以从Java调用C代码 - 这里没有问题。然后,如果你在你的C例程中有一些非常具体的东西,你总是可以通过包装去。

看看这里。

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

在此示例,您正在调用C代码 - 反过来 - 调用另一个库。

您也可以通过将您的JNI代码与其他库链接来实现。喜欢这里:

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

有很多的选择。当涉及到JNI与JNA。确保JNA的效率足够高。一般来说,JNA往往会变慢。看看这里:

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

希望这有助于。

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

+0

感谢您的回答!我询问该设备的卖主,并希望他们能够进一步帮助我。 aspekt与效率是一个好点。当我有2-3个传感器,他们都有一个40-50khz的频率会有很多的电话 - 或者他们打开一个流或类似的东西 – white91wolf