java - 使用 SWIG 在 c++ 和 java 之间创建接受 std::vector(映射到 ByteBuffer)的 std::function
问题描述
我试图拼凑以下代码: SWIG typemap uint8_t* from C/C++ to java.nio.ByteBuffer
将 java.nio.ByteBuffer 从 java 传递到 std::array& 以进行 C++ 调用。
我想在 如何使用 SWIG 包装 std::function 对象中从https://stackoverflow.com/users/168175/flexo回答类似的事情 对于 std::function (但我可以接受简单的答案)。
特别是我想要一个可以实现 java 的 Java 回调类
std::function<void(const std::vector<uint8_t> &)>
在 C++ 方面,
uint32_t registerForEvent(const std::vector<uint8_t> &event, std::function<void(const std::vector<uint8_t> &)> process)
并让 c++ 端调用该函数并让 java 端能够覆盖/实现调用:
public class myCallback extends Callback {
public void call(java.nio.ByteBuffer data) {
/* do something with data */
}
}
我想我需要使用 env->NewDirectByteBuffer(ptr,size) 从 C/C++ 的 SWIG 类型映射 uint8_t* 到从 C++ 发送的 std::vector& 初始化的 java.nio.ByteBuffer 与参数/解包一起发生/lvalref/转发。
通用 VA_ARGS 宏是否有一些偷偷摸摸的方法来实现这一点?甚至只是我对特定 std::function 的简单案例的一个例子:
解决方案
推荐阅读
- gml - How to get access to the instance variable within the Create event?
- javascript - 如何将用户输入参数传递给我的云函数?
- list - Quick-Dict 或 Hash-List :键值和键值?
- ansible - 如何在 when 条件下使用变量替换?
- go - errgroup 的竞争条件?
- python - AttributeError:从 Windows Linux 子系统使用 Ubuntu Bash 时,模块“os”没有属性“fork”
- reactjs - 在 React JS 中使用从子级传递到父级的数据更新 Firebase 对象
- django - 使用 Django 或其他语言生成运行时模型
- php - 我在移动设备上的汉堡菜单在几页上打不开(Wordpress)
- ios - 编译 Xamarin Forms iOS 项目时出现编译错误