使用Java访问第三方DLL

时间:2015-08-03 01:12:53

标签: java dll java-native-interface jna

我正在尝试为使用C语言编写的National Instruments驱动程序(DLL)的科研设备编写Java程序。目前我对这些DLL一无所知。如果需要,我可以通过我的客户联系NI获取详细信息。

我的C / C ++技能很古老,所以宁愿避免任何需要编写C / C ++代码的东西。

寻找建议,包括指导我的教程。我的Java技能非常出色,目前我的C / C ++就像十年之久。

1 个答案:

答案 0 :(得分:1)

您案例中最简单的选项可能是JNA

这是一个简单的Hello World example,用于向您展示映射C库的printf函数所涉及的内容:

package com.sun.jna.examples;

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

/** Simple example of JNA interface mapping and usage. */
public class HelloWorld {

    // This is the simplest way of mapping, which supports extensive
    // customization and mapping of Java to native types.

    public interface CLibrary extends Library {
        CLibrary INSTANCE = (CLibrary)
            Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"),
                               CLibrary.class);

        void printf(String format, Object... args);
    }

    // And this is how you use it
    public static void main(String[] args) {
        CLibrary.INSTANCE.printf("Hello, World\n");
        for (int i=0;i < args.length;i++) {
            CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]);
        }
    }
}

JNA&#39; JavaDocgithub project包含各种用例的示例和教程。