在java中使用C lib(dll)和特定的c调用约定cdecl

时间:2017-04-06 15:02:29

标签: java dll java-native-interface cdecl

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

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

1 个答案:

答案 0 :(得分:0)

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

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

看看这里。

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

在此示例中,您正在调用C代码,而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获得。