没有源代码的JNI(UnsatisfiedLinkError)

时间:2014-11-11 12:09:49

标签: c++ com java-native-interface unsatisfiedlinkerror

我需要通过Java JNI调用用C ++编写的COM对象。 我没有COM对象API的文档,所以我想知道是否有办法来"查询"对象本身。 我有一个用VBA编写的示例,它调用COM对象上的一个函数,但是当我尝试使用JNI本机方法复制同一个调用时,我得到以下错误。 我假设我在其中一个参数类型或返回类型中出错(VBA没有定义返回类型)。

Exception in thread "main" java.lang.UnsatisfiedLinkError: MyWrapper.functionOne(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;)V
at MyWrapper.funtionOne(Native Method)
at MyWrapper.main(MyWrapper.java:22)

1 个答案:

答案 0 :(得分:0)

您无法通过JNI直接调用COM对象。 JNI用于调用已使用JNI语法和对象声明的函数。

如果要直接调用,则需要使用Java Native Access(JNA)库。它与.Net P / Invoke语法非常相似。

请参阅:https://github.com/twall/jna