アドバイスをお願いします。単純なDLL(Windows 7 64ビットの下)と、このDLLへのJNAアクセスを備えた単純なJavaコードがあります。問題は、このDLLの64ビットバージョンを使用すると、DLLテスト関数giveIntGetIntでJavaからパラメーターを取得できないように見え、32ビットDLLを使用しても問題がないことです。どこが間違っていたの?ありがとうございました!
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;
/** Simple example of native library declaration and usage. */
public class HelloWorld {
public interface simpleDLL extends Library {
simpleDLL INSTANCE = (simpleDLL) Native.loadLibrary(
(Platform.isWindows() ? "simpleDLL" : "simpleDLLLinuxPort"), simpleDLL.class);
int giveIntGetInt(int a); // int giveIntGetInt(int a);
}
public static void main(String[] args) {
int b = simpleDLL.INSTANCE.giveIntGetInt(2);
System.out.println("Hello, World\n");
System.out.println(String.format("Argument %d", b));
}
}
これはCdllメソッドです。
int simpleDLL::giveIntGetInt(int a)
{
return 2*a;
}
たとえば、これは私が64ビットdllで持っているものです:
Hello, World
Argument 181140
32ビットdll:
Hello, World
Argument 4