C++ java。lang.IllegalArgumentException:函数的参数0处不支持参数
我在从C调用函数时使用JNA时出现了一个类似标题的错误
我正在用Java开发,我想使用来自的函数。我已成功调用另一个函数
这是函数的C头
SERVICE_API BOOL apiDoTransactionEx
( ITransactionIn* transactionReq,
ITransactionOut* transactionResp,
unsigned short nApplicationNumber,
unsigned char *inBuffer,
unsigned long inBufferSize,
unsigned char *outBuffer,
unsigned long *outBufferSize );
class ITransactionOut
{
public:
virtual char* getAmount() = 0;
virtual char* getC3Error() = 0;
virtual char* getCurrencyCode() = 0;
virtual char* getTerminalNumber() = 0;
virtual char* getUserData1() = 0;
virtual char* getPrivateData() = 0;
};
class ITransactionIn
{
public:
virtual bool setAmount(char* amount) = 0;
virtual char* getAmount() = 0;
virtual bool setTermNum(char* termNum) = 0;
virtual char* getTermNum() = 0;
virtual bool setCurrencyCode(char* currencyCode) = 0;
virtual char* getCurrencyCode() = 0;
virtual bool setOperation(char* operation) = 0;
virtual char* getOperation() = 0;
virtual bool setAuthorizationType(char *type) = 0;
virtual char* getAuthorizationType() = 0;
virtual bool setCtrlCheque(char* ctrlCheque) = 0;
virtual char* getCtrlCheque() = 0;
virtual bool setUserData1(char* data) = 0;
virtual char* getUserData1() = 0;
};
目前我在Java中的映射是
boolean apiDoTransactionEx(ITransactionIn transIn,
ITransactionOut transOut,
int appNumber,
String inBuffer, //extdatain
long inBufferSize, //extdatainsize
String outBuffer, //extdataout
long[] outBufferSize //extdataoutsize
);
public interface ITransactionIn
{
boolean setAmount(String amount);
String getAmount();
boolean setTermNum(String termNum);
String getTermNum();
boolean setCurrencyCode(String currencyCode);
String getCurrencyCode();
boolean setOperation(String operation);
String getOperation();
boolean setAuthorizationType(String type);
String getAuthorizationType();
boolean setCtrlCheque(String ctrlCheque);
String getCtrlCheque();
boolean setUserData1(String data);
String getUserData1();
}
public interface ITransactionOut
{
String getAmount();
String getC3Error();
String getCurrencyCode();
String getTerminalNumber();
String getUserData1();
String getPrivateData();
}
但是每当我调用函数时,它总是会返回这样的错误
Exception in thread "JavaFX Application Thread"
java.lang.IllegalArgumentException: Unsupported argument type com.cashlez.km.client.controllers.IPEKInjectorController$2 at parameter 0 of function apiDoTransactionEx
at com.sun.jna.Function.convertArgument(Function.java:626)
at com.sun.jna.Function.invoke(Function.java:305)
at com.sun.jna.Library$Handler.invoke(Library.java:236)
at com.sun.proxy.$Proxy5.apiDoTransactionEx(Unknown Source)
有人有其他的地图吗? 致以最良好的祝愿
# 1 楼答案
好的,我会回答我自己的问题
这就是我所做的,它神奇地工作