如何将java函数指针传递给c++本机代码

2023-12-05

我想从java(android)代码调用本机c++方法,并将java函数作为参数传递,这样我就能够将函数指针保存在c++代码中,并从本机代码激活它。

我选择使用匿名类在java中实现函数指针,并从java中调用本机函数,如下所示:

interface FunctionPtrHelper {
bool function(String param);

}

NativeFunc(param1,param2,new FunctionPtrHelper() {
public bool myFunction(String param) {
    //body of my function
}});

如何让 swig/jni 知道第三个参数(实际上是一个类)并将其转换为 C++ 中的函数指针(将包含“myFunction”)?
如果不可能,是否有另一种方法将函数指针从 java 传递到 c++?


您可以编写一个 C++ 接口并将其 SWIG 作为“导演”类。然后就可以用Java实现该接口了。在 Java 中实例化实现对象并将其传递给采用接口指针或引用的 C++ 方法,C++ 将能够回调到您的 Java 类。例如:

// SWIGed C++
class IStringToBool
{
public:
    virtual bool call(std::string s) = 0;
}

class IStringToBoolUser
{
public:
    void setFunction(IStringToBool &function);
}

进而:

// Java
public class MyFunction implements IStringToBool {
    public bool call(String s) {
        // do something
        return true;
    }
}

文档:使用控制器的跨语言多态性

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将java函数指针传递给c++本机代码 的相关文章

随机推荐

  • NestJS TypeORM 模拟存储库的数据源

    我正在尝试模拟一个存储库 我不想进行实际的数据库调用 我 认为我 正在关注 NestJS 的文档以及某些 stackoverflow 项目 但是 当我运行测试时 出现以下错误 JwtStrategy validate throws an u
  • Java 7 支持的 JavaFx 应用程序未在 Mojave 上运行

    我的申请支持 Jdk1 7 0 76 JavaFx2 2 76 b13 Netbeans IDE Ant 用于构建和创建安装程序 在 Windows 和 Mac 上受支持 它一直成功运行到 High Sierra 当我尝试跑步时 app莫哈
  • 获取数据然后渲染到dom React

    您好 我正在从 api 获取数据 我想获取数据并将其渲染到 dom 但出现错误 Uncaught TypeError Cannot read property map of undefined at Topicselect render 这
  • CUDA 内核中的 2D 图像索引错误

    我正在使用 CUDA 对图像进行线性过滤 我使用 2D 线程块和 2D 网格来使问题变得自然 这是我的索引方式 height and width是图像尺寸 dim3 BlockDim 16 16 dim3 GridDim GridDim x
  • 以编程方式检测 iPhone 上是否安装了应用程序

    我处于这种情况 我必须在 iPhone 应用程序中显示一个按钮 其中显示 打开 myApp 如果设备上安装了 myApp 或 下载 myApp 如果设备上未安装 myApp 为此 我需要检测设备上是否安装了应用程序 具有已知的自定义 URL
  • jqgrid:添加表单需要但编辑表单不需要的字段?

    用户有密码 添加用户时需要密码 但在编辑操作时不需要密码 但可以更改 用jqgrid可以做到这一点吗 您可以更改的值required的财产编辑规则代替beforeShowForm see here 您可以使用设置列属性例如这样做 例如设置r
  • Javafx 2.0 中的自定义标题栏?

    有没有关于如何在 javafx 2 0 中创建自定义标题栏的教程 我正在创建一个桌面 GUI 应用程序 希望有一个黑色渐变标题栏 其中包含用于最小化和关闭的自定义按钮 Here是 WPF 的教程 我正在寻找类似于 javafx 的东西 隐藏
  • Powershell DSC:带有参数的复合资源不起作用

    我正在开发 DSC 复合资源 但我似乎无法让它工作 我的代码 E Dev DSCResources run ps1 Import Module Test Force Configuration Run Import DscResource
  • Ionic 4 中的冲突组件:IonCard 和 SwingCardComponent

    我正在关注本教程 并且我在 Ionic3 和 4 之间的差异方面面临一些困难 我正在使用 Ionic4 当我这样做时ionic serve一切都编译成功 但是当我转到网络浏览器时 控制台中出现以下错误 Uncaught Error Temp
  • 没有数据库的 ASP.NET MVC 角色(并且没有角色提供程序)

    我有一个超级简单的 ASP NET MVC 应用程序 它使用 RpxNow OpenID 来允许用户登录 我现在想让用户编辑自己的帐户 并提供管理员访问权限来编辑任何人的帐户 我有两个单独的 编辑帐户 视图 帐户 编辑 帐户 编辑 1 第一
  • 无法在 Windows 7 本地运行 Meteor 应用程序

    我在从命令提示符行运行我的应用程序时遇到问题 我不习惯从终端运行应用程序等 我将向您展示我在下面得到的内容 C Windows system32 gt meteor create newapp newapp created To run y
  • Bean 验证不起作用 Spring Data Neo4j

    我正在使用带有嵌入式 Neo4j 的 SDN 我必须使用 bean validate 但它不起作用 null 毫无例外地保存在数据库中 依赖性是 dependencies specify dependencies here under ei
  • 如何根据普通 JavaScript 中的输入名称创建表单输入值的嵌套对象 (JSON)?

    假设表格如下所示
  • 图像处理 - 旋转扫描文档以对齐文本

    我有一个 OCR C 项目 其中包含包含文本的扫描文档 我需要返回文档中的文本 我已经有了解析文本的解决方案 但是我们陷入了扫描文档旋转的部分 向右或向左 假设图像中没有噪声 所有像素都是白色或黑色 任何人都可以帮助我们使用一种算法在运行时
  • MVC中Ajax.BeginForm刷新整个页面

    我一直在尝试向我的 mvc 站点添加一些 Ajax 功能 但是 我遇到了有关页面刷新的问题 我在主页侧边栏上创建了一个 RSS 视图 它允许用户使用下拉列表选择他们想要查看的 RSS 提要 最初我在 mvc 中使用 html begin 表
  • WSO2 ESB 未知错误代码 102511

    我最近升级了WSO2 ESB到版本 4 7Windows Server 2008 R2在简单地将 SOAP 请求代理到端点时遇到了下一个错误 当处理程序处于不一致状态时接收响应REQUEST HEAD ERROR CODE 102511 E
  • 使用 IntelliJ 内部控制台的 Kotlin readLine() 函数出现问题

    当我尝试从用户那里读取一些值时 我会得到奇怪的行为 例如 如果我有一个简单的程序 fun main print insert value val tmp readLine println value tmp 我期望该程序的下一个行为 ins
  • 可以根据 URL 路径解析 DNS

    我的理解是 与单独的子域 例如不同书籍类型的子站点 相比 将两个相关站点放在同一域下有一定的优势 我能想到的两个是使用相同的 SSL 证书和 SEO 排名 我希望同一域有不同的路径解析到不同的 IP 地址 例如example com a t
  • notificationclick 事件服务工作者

    我正在与服务人员合作在我的用户之间显示通知 在我的代码中我包括notificationclick事件 通过这次活动 我试图处理两个案例 第一种情况 如果在我的浏览器中打开了我的网站页面 请不要打开它 而是关注它 第二种情况 如果我的浏览器没
  • 如何将java函数指针传递给c++本机代码

    我想从java android 代码调用本机c 方法 并将java函数作为参数传递 这样我就能够将函数指针保存在c 代码中 并从本机代码激活它 我选择使用匿名类在java中实现函数指针 并从java中调用本机函数 如下所示 interfac