【发布时间】:2011-01-12 19:15:45
【问题描述】:
我有一个 c++ 函数声明为
unsigned char** 分类
我在 SWIG 中使用以下接口文件
%module PWrap
%include "std_string.i"
%include "arrays_java.i"
%apply byte[][] {unsigned char**};
%{
#include "Classifier.h"
%}
%include "Classifier.h"
它生成了一些文件,包括一个 SWIGTYPE_p_p_unsigned_char 对象
现在,我尝试在 Java 中使用这个 C++ 函数:
SWIGTYPE_p_p_unsigned_char data = pc.classify();//this works, but I can't do anything with the data object execept pass it to other C++ functions expecting unsigned char**
byte[][] data2 =pc.classify();//this does not work - throws compile time error
那么我做错了什么才能让这个映射正常工作?我知道矩阵的维度,因为我将 args 传递给 C++ 函数来设置所有内容。换句话说,我很乐意以任何方式取回数据,只要我能以某种方式将其转换为 Java 中的字节即可。
【问题讨论】:
-
在 C++ 中
unsigned char **可以指向任何东西。是否有任何信息必须如何使用分类函数的结果?例如用户之后是否需要释放内存,用户应该如何使用矩阵? -
用户不需要释放它或任何东西 - 只需使用它进入图像缓冲区 - 一次。