Java 如何从jna或其他库访问vb.net本机dll文件的类和方法

Java 如何从jna或其他库访问vb.net本机dll文件的类和方法,java,dll,java-native-interface,native,jna,Java,Dll,Java Native Interface,Native,Jna,我拥有的 a) 我使用过jna库。 b) 我的dll是vb.net本机dll文件。 c) 有关dll的更多信息,请查看此链接 我的源代码如下所示 接口 package com.dll.lib; import com.sun.jna.Library; import com.sun.jna.Native; public interface BrowseControl extends Library { BrowseControl instance = (BrowseControl)Nat

我拥有的
a) 我使用过jna库。
b) 我的dll是vb.net本机dll文件。
c) 有关dll的更多信息,请查看此链接

我的源代码如下所示

接口

package com.dll.lib;

import com.sun.jna.Library;
import com.sun.jna.Native;

public interface BrowseControl extends Library {
    BrowseControl instance = (BrowseControl)Native.loadLibrary("Vertex FXBOAPI10.5.9", BrowseControl.class);
}
阶级

此代码正在运行

我想要什么
a) 如何在java编程语言中从dll访问它们的类和方法

b) 如何引用
{VertexFX Backoffice API}
Dll,然后定义
CVertexFXBOAPI
类类型的对象,然后调用方法
Object.SetLoginInfo
Object.Login


谢谢

您可以通过JNI使用共享库中的本机代码。JNI提供了Java和代码之间的桥梁。但是,您必须确保保持本机例程的命名约定

在您的情况下(您有DLL,其中包含要调用的本机代码),您可以通过JNI包装器对代码进行编码。这样,您就可以保持DLL的原样

在此处查看示例代码,其中:

这并不完全是您想要的(因为代码是针对macOS/Linux的),但是模式非常相似


您的JNI包装器(从Java调用)——这将是一个本机代码——将加载您已经拥有的库(位于其他人生成的DLL中的库)。然后,您需要从该DLL调用函数。

请编辑您的答案。未包含类的代码,您未正确包含链接。你的问题很难理解,我不确定你到底在问什么。@Yep_是的,你现在可以检查这个问题了,我认为JNA不能做.NET或COM。另外,不确定为什么要将DLL称为“本机”。您必须使用Java->C(通过JNA或JNI-我更喜欢JNI)->.NET。有关如何从C->.NET获取的入门知识,请参阅。您可以使用C++/CLI进行JNI。如果您想坚持使用JNA,可以将VisualBasic模块方法导出为,这对术语“native”是有意义的。当然,这并不容易实现访问类的目标。另外,还有一些用于Java-.NET和Java COM桥接的产品。(我提到COM是因为许多.NET程序集和类选择使用.NET的COM可调用包装器功能。)
package com.dll.main;

import com.dll.lib.BrowseControl;

public class MainTest {

    public static void main(String[] args) {
        BrowseControl control=BrowseControl.instance;
            System.out.println("Brwoser: "+control.getClass());
        }  
    }

}