我需要通过 Java JNI 调用用 C++ 编写的 COM 对象。 我没有 COM 对象 API 的文档,所以我想知道是否有办法“查询”对象本身。 我有一个用 VBA 编写的示例,它调用 COM 对象上的一个函数,但是当我尝试使用 JNI native 方法复制相同的调用时,出现以下错误。 我假设我在其中一个参数类型或返回类型中犯了错误(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 语法非常相似。
关于c++ - 没有源代码的 JNI (UnsatisfiedLinkError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26864626/