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

Md *_*lam 5 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)Native.loadLibrary("Vertex FXBOAPI10.5.9", BrowseControl.class);
}
Run Code Online (Sandbox Code Playgroud)

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());
        }  
    }

}
Run Code Online (Sandbox Code Playgroud)

这段代码正在运行.

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

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

谢谢

Oo.*_*.oO 0

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

在您的情况下(您有带有要调用的本机代码的 DLL),您可以通过 JNI 包装器来编码代码。这样,您就可以保持 DLL 不变。

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

http://jnicookbook.owsiak.org/recipe-No-018/

这并不完全是您想要的(因为代码适用于 macOS/Linux),但架构非常相似。

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