我正在开发一个项目,我有一些传感器,我希望它们通过USB连接到PC。现在他们写了一个用lib编写的windows lib,并且所有函数都使用c的cdecl调用约定,我必须确保如果我用另一种语言(java!)编程,则给出调用约定。
所以我研究了一下,发现了一些教程来绑定java中的dll,或者使用JNA。但这对我来说都是新事物,我想确定,它是可能的(也许是一个例子) - 设备并不便宜,我想在买之前知道它。
答案 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获得。