Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JNI可以处理任何dll文件(Windows)吗?_Java_Dll_Java Native Interface - Fatal编程技术网

Java JNI可以处理任何dll文件(Windows)吗?

Java JNI可以处理任何dll文件(Windows)吗?,java,dll,java-native-interface,Java,Dll,Java Native Interface,我是JNI的新手。我有几个问题: JNI可以处理windows中存在的每种类型的dll吗?我想链接一个库,但它给了我错误。JNI和dll是否可能不兼容 摘自VB.NET(它可以工作) 来自Java的完整代码 公共类主窗体{ /** * @param args */ public native int ConnectReader(); public static void main(String[] args) { // TODO Auto-generated method stub

我是JNI的新手。我有几个问题: JNI可以处理windows中存在的每种类型的dll吗?我想链接一个库,但它给了我错误。JNI和dll是否可能不兼容

摘自VB.NET(它可以工作)

来自Java的完整代码

公共类主窗体{

/**
 * @param args
 */
public native int ConnectReader();
public static void main(String[] args) {
    // TODO Auto-generated method stub

    MainForm mf = new MainForm();

    System.out.println(mf.ConnectReader());
}

static {
  System.loadLibrary("rfidhid");
}
}

显示错误代码

Exception in thread "main" java.lang.UnsatisfiedLinkError: MainForm.ConnectReader()I
at MainForm.ConnectReader(Native Method)
at MainForm.main(MainForm.java:13)
有人能指出我哪里做错了吗

编辑:

事实证明,我应该这样做(而且是有效的)


JNI访问使用损坏的名称;您需要使用正确的名称和参数将系统API包装在JNI存根中。不能直接调用系统API

我建议彻底研究JNI,或者使用类似的方法来减轻一些繁重的工作

例如,给定Java:

package com.mycompany.jni;

public MyClass
{
native boolean someMethod(String arg)
...
}
链接的本机方法类似于:

JNIEXPORT jboolean JNICALL Java_com_mycompany_jni_MyClass_someMethod(JNIEnv *jep, jobject thsObj, jstring arg)               

你节省了整整一天(为了研究错误的方向)很高兴我能帮你。我仍然记得那些年前在JNI上剥皮是什么感觉。
package com.mycompany.jni;

public MyClass
{
native boolean someMethod(String arg)
...
}
JNIEXPORT jboolean JNICALL Java_com_mycompany_jni_MyClass_someMethod(JNIEnv *jep, jobject thsObj, jstring arg)