2

Java アプリケーションで C++ を使用しようとしていますが、単純な JNA で失敗し、その理由がわかりません。テスト目的で、次のチュートリアルの DLL を使用します: http://msdn.microsoft.com/en-us/library/vstudio/ms235636.aspx

今、私は JNA で Add メソッドをロードしようとしています

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

public class Jnatest {

    public interface  CppLib  extends Library  {


        CppLib INSTANCE = (CppLib)Native.loadLibrary("MathFuncsDll", CppLib.class);


        double Add(double a, double b);

        double Subtract(double a ,double b);

        double Multiply(double a, double b);

        double Divide(double a, double b);
        } 

  public static void main(String[] args) {
      System.setProperty("jna.library.path", "C:\\JNA\\");
    CppLib lib = CppLib.INSTANCE;
    double res;
    res=lib.Add(1.0, 1.25);
    System.out.println("add:\t"+res); 
    }
}

コンパイルすると、次の読み込み例外が発生します。

Exception in thread "main" java.lang.UnsatisfiedLinkError: %1 ist keine zulässige Win32-Anwendung.

    at com.sun.jna.Native.open(Native Method)
    at com.sun.jna.Native.open(Native.java:1759)
    at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260)
    at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
    at com.sun.jna.Library$Handler.<init>(Library.java:147)
    at com.sun.jna.Native.loadLibrary(Native.java:412)
    at com.sun.jna.Native.loadLibrary(Native.java:391)
    at Jnatest$CppLib.<clinit>(Jnatest.java:9)
    at Jnatest.main(Jnatest.java:23)

まず、ファイルが配置されているライブラリ パスに問題があると思います。しかし System.setProperty("jna.library.path", "C:\JNA\"); パスimoを設定する必要があります。他に何が間違っている可能性がありますか?

ありがとうございました

デビッド

4

0 に答える 0