如何将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++本机代码 的相关文章

  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • java中日期转换dd-MMM-yyyy到dd-MM-yyyy

    在Java中将23 Mar 2011转换为23 03 2011的最简单方法是什么 感谢大家 这似乎解决了这个问题 try Calendar cal Calendar getInstance cal setTime new SimpleDat
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • Java 不可变对象 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习不变性的概念 据我了解 一旦创建对象 不可变对象就无法更改其值 但我不明白不可变对象的以下用途 They are 自动是线程
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • Java LRU 缓存使用 LinkedList

    堆栈溢出的新手 所以请不要介意我以菜鸟的方式问这个问题 我正在尝试使用链表实现 LRU 缓存 我在这里看到了使用 linkedHashMap 和其他数据结构的其他实现 但对于这种情况 我正在尝试使用链表创建最佳优化版本 正如我在技术期间被问
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 如何使 JScrollPane 与嵌套 JPanel 一起正常工作?

    我正在使用 NetBeans 在 Java 中构建 Swing 应用程序 但我遇到布局问题 我的主框架包含一个JScrollPane其中包含一个JPanel called contentPanel其中又包含一个JPanel called l
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 如何列出Resources文件夹中的所有文件(java/scala)

    我正在编写一个函数 需要访问资源中的文件夹 并循环遍历所有文件名 如果这些文件符合条件 则加载这些文件 new File getClass getResource images sprites getPath listFiles 返回空指针
  • 如何创建具有同等时间元素的 JavaFX 转换?

    我正在尝试 JavaFX 和动画 尤其是PathTransition 我正在创建一个简单的程序 使球 弹跳 而不使用QuadCurveTo班级 到目前为止 这是我的代码 Ellipse ball new Ellipse 375 250 10
  • 在没有EOF的情况下停止读取java中的输入

    In 问题 如何停止读取输入 我的程序继续运行 要求更多输入 public static void main String args throws Exception BufferedReader br new BufferedReader
  • 获取Java中ResultSet返回的行数

    我用过一个ResultSet返回一定数量的行 我的代码是这样的 ResultSet res getData if res next System out println No Data Found while res next code t
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub

随机推荐

  • 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