Return type presence must match error on handle creation

Ty Young youngty1997 at gmail.com
Fri Feb 21 04:32:54 UTC 2020


Hi,


I'm trying to call the XNVCTRLQueryExtension function from NVXCtrl API 
but am getting an error[1].


The function is defined like so:


Bool XNVCTRLQueryExtension (
     Display *dpy,
     int *event_basep,
     int *error_basep
);


where Bool is defined as an int in Xlib_h(Display is an X server display 
pointer).


Java binding code is:


this.address = NVCtrl_h.LIBRARY_LOOKUP.lookup("XNVCTRLQueryExtension");

this.descriptor = FunctionDescriptor.of(MemoryLayouts.C_INT, false, 
MemoryLayouts.C_POINTER, MemoryLayouts.C_POINTER, MemoryLayouts.C_POINTER);

this.type = MethodType.methodType(int.class, MemoryAddress.class, 
MemoryAddress.class, MemoryAddress.class);


However this gives the following error:


Caused by: java.lang.IllegalArgumentException: return type presence must 
match!
     at 
jdk.incubator.foreign/jdk.internal.foreign.abi.SharedUtils.checkFunctionTypes(SharedUtils.java:185)
     at 
jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.CallArranger.getBindings(CallArranger.java:95)
     at 
jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.CallArranger.arrangeDowncall(CallArranger.java:129)
     at 
jdk.incubator.foreign/jdk.internal.foreign.abi.x64.sysv.SysVx64ABI.downcallHandle(SysVx64ABI.java:72)
     at 
org.goliath.bindings.nvxctrl.functions.XNVCTRLQueryExtension.<init>(XNVCTRLQueryExtension.java:28)
     at 
org.goliath.bindings.nvxctrl.main.NVCtrl_h.<clinit>(NVCtrl_h.java:24)



What's going on?



[1] 
https://github.com/NVIDIA/nvidia-settings/blob/master/src/libXNVCtrl/NVCtrlLib.h



More information about the panama-dev mailing list