我在类中添加了一个返回null终止的方法 一组字节。我希望在java中返回一个byte [] 由于这种改变,功能似乎有效 奇妙的是返回字节,但是 jvm在退出时与segv崩溃。 我打印出“出口主”,出现在输出中 然后发生了segv
C ++类
class squid {
const signed char* getBytes()
}
squidx.i
%typemap(jni) const signed char* "jbyteArray"
%typemap(jtype) const signed char* "byte[]"
%typemap(jstype) const signed char* "byte[]"
%typemap(out) const signed char*
{
long lSize = strlen($);
// create a new byte[] object in Java
jbyteArray data = JCALL1(NewByteArray, jenv, lSize);
// copy pixels from the image buffer
JCALL4(SetByteArrayRegion, jenv, data, 0, lSize, (jbyte*)result);
$result = data;
}
// change Java wrapper mapping for unsigned char*
%typemap(javaout) const signed char* {
return $jnicall;
}
java -version的结果
java版“1.7.0” Java(TM)SE运行时环境(构建pxa6470sr5-20130619_01(SR5)) IBM J9 VM(内部版本2.6,JRE 1.7.0 Linux amd64-64压缩参考文献20130617_152572(已启用JIT,已启用AOT) J9VM - R26_Java726_SR5_20130617_1436_B152572 JIT - r11.b04_20130528_38954ifx1 GC - R26_Java726_SR5_20130617_1436_B152572_CMPRSS J9CL - 20130617_152572) JCL - 20130616_01基于Oracle 7u25-b12
答案 0 :(得分:0)
从SWIG发行版中查看java/typemaps.i
。可能它已包含所需的类型地图。检查OUTPUT_TYPEMAP
或INOUT_TYPEMAP
以获取参考实施。
答案 1 :(得分:0)
结果证明这是与本地世界中仍然存在的其他线程的交互 它根本与java无关。