51,410
社区成员
发帖
与我相关
我的任务
分享typedef struct CTest{
int val;
}CTest;
void GetStructyinyong(CTest& yinyong)
{
yinyong.val = 22;
}
java:
package hk_dvr;
import java.util.ArrayList;
import java.util.List;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.PointerType;
import com.sun.jna.Structure;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.PointerByReference;
public class DVR {
public interface CLibrary extends Library {
public static class CTest extends Structure{
public static class ByReference extends CTest implements Structure.ByReference{}
public int val;
@Override
protected List<String> getFieldOrder() {
// TODO Auto-generated method stub
List<String> a = new ArrayList<String>();
a.add("val");
return a;
}
}
void GetStructyinyong(CTest.ByReference yinyong);
}
public static void main(String[] args) {
// 载入DLL
CLibrary Clib = (CLibrary) Native.loadLibrary("Test", CLibrary.class);
//引用测试
CLibrary.CTest.ByReference yinyong = new CLibrary.CTest.ByReference();
yinyong.val = 88;
//yinyong.write();
Clib.GetStructyinyong(yinyong);
System.out.println(yinyong.val + "");
System.out.println("END!");
}
}
输出结果:22.可见,获取到了引用的数值