我在C ++中有一个函数,它的指针是函数参数,如下所示:
get_Message_Tag_Code_(double * pCurrentTag, int * pCurrentCode, char *receiveBuffer, int sizeOfBuffer)
我想在使用JNI的Java代码中使用此函数。 SWIG已经在java中转换了这个函数,如下所示:
get_Message_Tag_Code_(SWIGTYPE_p_double pCurrentTag, SWIGTYPE_p_int pCurrentCode, String receiveBuffer, int sizeOfBuffer)
如何获取SWIGTYPE_p_double和SWIGTYPE_p_int指向的值?
由于
答案 0 :(得分:0)
不幸的是,你的C ++签名并没有告诉我们指向事物的语义。它们是输入还是输出,或两者兼而有之?
对于一般的in-out情况,将你的参数放入一个struct,为它创建一个包装器方法,然后SWIG包装器(我使用std :: vector mapping,参见swig vector):
struct MyArgs {
double currentTag;
int currentCode;
std::vector<char> buffer;
}
get_Message_Tag_Code_wrap(MyArgs* args) {
get_Message_Tag_Code_(&args->currentTag, &args->currentCode, &buffer.at(0), buffer.size());
}
不可否认,我可能正在考虑使用vector :: at()的地址,但我发现它总是产生数组地址。