我需要通过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)

最佳答案

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

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

参见:https://github.com/twall/jna

关于c++ - 没有源代码的JNI(UnsatisfiedLinkError),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26864626/

10-09 13:24