Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SWIG将const unsigned char example[]包装成Java字节[]作为参数_Java_C++_C_Swig - Fatal编程技术网

SWIG将const unsigned char example[]包装成Java字节[]作为参数

SWIG将const unsigned char example[]包装成Java字节[]作为参数,java,c++,c,swig,Java,C++,C,Swig,我有 const unsigned char publickeydmodule[],我希望将其包装为参数,并在java层中作为字节[]获取 c++ 初始化(PublicKeyModules) 爪哇 初始化(字节[]PublicKeyModule) 大口 %typemap(jni) unsigned char *content "jbyteArray" %typemap(jtype) unsigned char *content "byte[]" %typemap(jstype) unsigned

我有

const unsigned char publickeydmodule[],我希望将其包装为参数,并在java层中作为字节[]获取

c++ 初始化(PublicKeyModules)

爪哇 初始化(字节[]PublicKeyModule)

大口

%typemap(jni) unsigned char *content "jbyteArray"
%typemap(jtype) unsigned char *content "byte[]"
%typemap(jstype) unsigned char *content "byte[]"
%typemap(javain) unsigned char *content {}

%typemap(in) unsigned char * content {
    $result = JCALL1(NewByteArray, jenv, arg1->contentLength);
    JCALL4(SetByteArrayRegion, jenv, $result, 0, arg1->contentLength, $1);
}

// Optional: ignore contentLength;
%ignore contentLength;

%inline %{
typedef struct {
    unsigned char * content;
    int contentLength;
} Foo;
%}
我一直在尝试这个swig文件的很多变体,就像人们提出的类似问题一样,但它对我不起作用。我猜是因为在另一个问题中,他们用它作为回报,而我在修改中肯定做错了什么,把它作为一个论点


非常感谢您的评论,谢谢。

在尝试了一系列不同的解决方案后,效果更好的是上面一条评论中建议的%apply

%apply (char *STRING, size_t LENGTH) { (char *modulusBytes, int modulusLength) }

需要强调的一点是,变量的名称必须与声明中使用的名称相同。

您是否尝试过使用中所述的
%apply
?是的,我尝试过apply,它可以返回我想要的。但它会在cxx文件中生成GetByteArrayElements,使我的应用程序崩溃。