【发布时间】:2013-11-20 18:24:45
【问题描述】:
我向一个类添加了一个方法来返回一个空终止 一组字节。我希望在 java 中返回一个 byte[] 由于此更改,该功能似乎有效 就返回字节而言非常好,但是 jvm 在退出时因 segv 而崩溃。 我打印了出现在输出中的“exiting main” 然后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
【问题讨论】: