java - 如何从 jna 或其他库访问 vb.net 原生 dll 文件的类和方法

标签 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

谢谢

最佳答案

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

在您的情况下(您拥有带有要调用的 native 代码的 DLL),您可以通过将对代码进行编码的 JNI 包装器。这样,您就可以保留 DLL 原样。

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

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

这不是您要查找的内容(因为代码是针对 macOS/Linux 的),但架构将非常相似。

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

关于java - 如何从 jna 或其他库访问 vb.net 原生 dll 文件的类和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43270843/

相关文章:

python - 是否可以在不安装的情况下运行 Python(不使用像 py2exe 这样的打包程序)?

delphi - 如何将 Bitmap 传递到 C++ 和 Delphi 中的 DLL 函数中?

c++ - 调用和传递 DLL 变量 C++

java-native-interface - 如何使用JNI在Java程序中调用getpid() C库函数?

java - JScrollPane 垂直滚动条太宽

java - 关于如何实现 Swing Listener 的一些问题

java - 将 MySql 日期时间映射到 hibernate

java - 为什么在 JNI 中调用纤程会在 JVM 中引发 StackOverflow?

c++ - 修改 std::vector 的底层数据结构不会改变它的大小

java - 将日期时间从一个区域转换为另一区域