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

时间:2017-04-07 06:09:40

标签: java dll java-native-interface native jna

我有什么
a)我使用过jna库 b)我的dll是vb.net本机dll文件 c)您可以查看此链接以获取有关dll link

的更多信息

我的源代码如下

界面

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

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

}

此代码正常运作。

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

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

由于

1 个答案:

答案 0 :(得分:0)

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

在你的情况下(你想要调用本机代码的DLL)你可以通过JNI包装器来编写代码。这样,您可以保留DLL原样。

在这里查看示例代码,其中:

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

这不是您正在寻找的(因为代码适用于macOS / Linux),但架构将非常相似。

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