jna挺简单的,觉得比jnative简单一些,写一个接口直接继承Library就可以,不过还是遇到了输出参数的问题,无法得到C++的输出参数。
package jna;
import com.sun.jna.Native;
import com.sun.jna.ptr.ByteByReference;
import com.sun.jna.win32.StdCallLibrary;
public class DLLTEST {
public interface PegRoute extends StdCallLibrary {
public int HCTInitEx(int Version, String pStrCurrentDirectory);
public long OpenDataStream (byte[] lpszDiskRoot);
public boolean WriteDataStream(long hDataStream, long offset, long opSize,
byte[] Buffer);
public boolean ReadDataStream(long hDataStream, long offset, long opSize,ByteByReference Buffer);
void CloseDataSream(long hDataStream);
int UpdateISOFileOfCDROMDriver(byte[] szLetter, byte[] szIsoFileName);
}
public static void main(String[] args) {
PegRoute epen = (PegRoute) Native.loadLibrary("StreamData",
PegRoute.class);
if (epen != null) {
System.out.println("DLL");
long hDataStream = epen.OpenDataStream("J:".getBytes());
byte[] by = "12345".getBytes();
boolean b=epen.WriteDataStream( hDataStream, 0, 1024,
by);
System.out.println("1." + hDataStream);
System.out.println("2." + b);
}
}
}