Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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
从64位操作系统使用jni4net从java调用C#时出错_Java_Jni4net - Fatal编程技术网

从64位操作系统使用jni4net从java调用C#时出错

从64位操作系统使用jni4net从java调用C#时出错,java,jni4net,Java,Jni4net,我试图使用jni4net从java调用C#函数,该函数在windows 32位操作系统中运行良好,但是当我试图从64位操作系统加载相同的C#dll时,我发现了这个错误 C:\Program Files (x86)\csharp\jni4net.n.w64.v20-0.8.6.0.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform at java.lang.ClassLoader$NativeLibrary.load(Native Me

我试图使用jni4net从java调用C#函数,该函数在windows 32位操作系统中运行良好,但是当我试图从64位操作系统加载相同的C#dll时,我发现了这个错误

C:\Program Files (x86)\csharp\jni4net.n.w64.v20-0.8.6.0.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
 at java.lang.ClassLoader$NativeLibrary.load(Native Method)
 at java.lang.ClassLoader.loadLibrary0(Unknown Source)
 at java.lang.ClassLoader.loadLibrary(Unknown Source)
 at java.lang.Runtime.load0(Unknown Source)
 at java.lang.System.load(Unknown Source)
 at net.sf.jni4net.CLRLoader.init(CLRLoader.java:47)
这是我的密码

public class JNIFromC
{
private static String BRDIGE_INIT_URL="C:\\Program Files (x86)\\csharp\\jni4net.n.w64.v20-0.8.6.0.dll";
private static String JNI_URL="C:\\Program Files (x86)\\csharp\\csharp.j4n.dll";
    public static void main(String[] args) {
        Csharp cSharp=new getMyFunctionsFromCSharp();

    }
 public static Csharp getMyFunctionsFromCSharp() throws IOException {

        Bridge.setClrVersion("v20");
        Bridge.init(new File(BRDIGE_INIT_URL));
        File shardFile = new File(JNI_URL);

        Bridge.LoadAndRegisterAssemblyFrom(shardFile);
        return new Csharp();
    }
}

我可能做错了什么

您需要用32位标志编译C#程序。或者您可以使用
corflags{my.exe}/32BIT+/Force
。这将使您的进程以32位进程启动。

错误是不言自明的,它声称您使用的是32位操作系统,或者您使用的是32位版本的java来运行此程序。如果要加载64位版本的dll,请确保您的操作系统是64位的,java也是。@user2494817当我尝试在64位操作系统上安装64位java时,浏览器无法识别java插件,因为应用程序是一个小程序。浏览器也是64位的吗?@user2494817我正在使用IE,不知道它是64位还是不适合浏览器可能是32位尝试使用64位浏览器(更不用说它是Internet Explorer了,所以天知道怎么回事。)所以我应该将应用程序编译到平台目标x86?然后在64位os Bridge.init(新文件(“C:\\myproject\\jni4net.n.w32.v20-0.8.6.0.dll”)上加载哪个dll;是w32还是w64?好心协助