使用 swig 追加到字节数组
Append to byte array using swig
我想使用 swig 从 C++ 附加到 Java 字节[]。诀窍是在不调用 GetByteArrayElements 的情况下执行此操作,因为如果无法固定 byte[],这将创建 byte[] 的副本。
无需 swig,我们可以轻松地使用 SetByteArrayRegion 执行此操作 - 直接将字节数写入 byte[]。 swig 的问题在于:
-
执行实际工作的代码是.cpp - 例如读取文件的内容并将其放入字符串 fileContents。c++ 代码无权访问 jni 字段。
-
执行 SetByteArrayRegion 的代码位于 .i 文件中 - 它无法访问由 c++ 函数生成的 fileContents 数据。
我找不到任何示例来使用 swig 将 c++ 函数生成的数据附加到 byte[] 中,而无需固定整个缓冲区,只需使用 SetByteArrayRegion 复制必要的数据。
用于实现的示例 C++ 功能:
void append(char *s, int pos) {
char* fileContents = readFromFile();
strcat(s+pos, fileContents);
}
可能的解决方法:
在 .i 文件中,我们执行实际实现(调用 readFromFile(,并使用这些结果直接在 %template 中调用 SetByteArrayRegion。这是相当黑客的。
java数组无法增长。一旦制作完成,它们的大小就会被锁定。唯一的选择是创建一个新的字节数组并返回它(并编写最终调用代码的任何代码,而不仅仅是传递一个字节数组,而且还会用你返回的任何变量替换它自己的变量;如果它不这样做,你就无能为力(。
相关文章:
- 保存/加载大量短数组到二进制文件
- 字符数组到无符号字符 *
- Int 数组到C++容器
- 如何模板化堆栈分配的多态指针数组到接口,包括派生类型的相应点?
- C++指针数组到字符数组中的特定位置
- C++字节数组到整数
- 为什么数组到指针的输出不相关
- win32 字节数组到列表框中
- 字符数组到十六进制字符串的转换 - 意外输出
- 从常量字符数组到字符数组的隐式转换
- 如何在 c++ 中读取/写入无符号数组到 ifstream/ostream?
- 从C++(非托管代码)检索数组到 C 尖锐形式(托管)
- 从结构的 C 数组到带有 ctypes 的 NumPy 数组的高效转换
- NV21 字节数组到 array2d<rgb_pixel>
- HBitmap字节数组到php
- 我的字节数组到十六进制字符串转换器有什么问题,或者为什么它在写入文件时会在某个位置后剪切符号?
- 字节数组到变量
- 在Matlab中编写一个固定长度的字节数组到二进制文件
- 转换uint8字节数组到任何WPF渲染对象
- 字节数组到C++中的int