从64位操作系统使用jni4net从java调用C#时出错
我试图使用jni4net从java调用C#函数,该函数在windows 32位操作系统中运行良好,但是当我试图从64位操作系统加载相同的C#dll时,我发现了这个错误从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
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?好心协助