1

Windows 32 ビット OS で正常に動作する jni4net を使用して Java から C# 関数を呼び出そうとしていますが、64 ビット OS から同じ 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();
    }
}

私は何が間違っているのでしょうか

4

1 に答える 1

1

C# プログラムを 32 ビット フラグでコンパイルする必要があります。または、 を使用できますcorflags {my.exe} /32BIT+ /Force。これにより、プロセスが 32 ビット プロセスとして開始されます。

于 2016-05-02T07:08:51.213 に答える