如何解决通过 JNA 从 Java 调用 C varargs 函数
从 these past issues 和 this documentation 的外观来看,它似乎可行,但如何?
我的试验:
C
extern "C" GATEWAY_API void callIntoNative(LPCSTR evt_name,...);
void callIntoNative(LPCSTR evt_name,...)
//void callIntoNative(char* evt_name)
{
std::cout << evt_name << std::endl;
va_list vargs;
va_start(vargs,evt_name);
std::cout << va_arg(vargs,int) << " " << va_arg(vargs,double) << std::endl;
va_end(vargs);
}
Java
// public static native void callIntoNative(String evtName,Object[] varargs);
// public static native void callIntoNative(String evtName,Object... varargs);
//GateWay.callIntoNative("give me love",new Object[] {24,new String()});
Function callIntoNative = Function.getFunction("gateway.dll","callIntoNative");
callIntoNative.invoke(new Object[]{new String("give me love"),new Integer(24),new Double(3.14)});
Java 程序的输出:
give me love
1374389535 1.18576e-322
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。