我在C中有一些代码,其中一个方法有一个函数指针作为参数.我正在尝试在我的

Android应用中使用C代码.

我决定使用SWIG来完成生成我需要的java文件的所有工作.一切都适用于常规函数(没有函数指针作为参数的函数).

但我不知道如何将我的JAVA方法作为回调函数传递给C函数.

这是一个例子:

这是我的multiply.h文件

typedef int (*callback_t) (int a, int b, int c);

int foo(callback_t callback);

这是我的multiply.c文件

#include

#include "multiply.h"

int foo(callback_t callback)

{

return callback(2, 4, 6);

}

这是我的接口文件multiply-swig.i

%module example

%{

/* Includes the header in the wrapper code */

#include "multiply.h"

%}

/* Parse the header file to generate wrappers */

%include "multiply.h"

然后我运行以下swig命令来生成我需要的java文件

swig -java -package com.example.ndktest -o multiply-wrap.c mulitiply-swig.i

然后swig生成以下文件:

example.java

package com.example.ndktest;

public class example {

public static int foo(SWIGTYPE_p_f_int_int_int__int callback) {

return exampleJNI.foo(SWIGTYPE_p_f_int_int_int__int.getCPtr(callback));

}

}

exampleJNI.java

package com.example.ndktest;

public class exampleJNI {

public final static native int foo(long jarg1);

}

SWIGTYPE_p_f_int_int_int__int.java

package com.example.ndktest;

public class SWIGTYPE_p_f_int_int_int__int {

private long swigCPtr;

protected SWIGTYPE_p_f_int_int_int__int(long cPtr, boolean futureUse) {

swigCPtr = cPtr;

}

protected SWIGTYPE_p_f_int_int_int__int() {

swigCPtr = 0;

}

protected static long getCPtr(SWIGTYPE_p_f_int_int_int__int obj) {

return (obj == null) ? 0 : obj.swigCPtr;

}

}

现在如何从我的java代码中调用这个foo方法?参数的类型为SWIGTYPE_p_f_int_int_int__int ???我不明白如何将JAVA方法作为回调传递给C代码……我想我肯定在这里遗漏了一些东西….

任何帮助表示赞赏,谢谢

swig c java gemt,SWIG C函数指针和JAVA相关推荐

  1. java中求组快速排序函数,如何在Java中实现快速排序?

    成为专业认证的快速排序是一种分而治之的算法.在分治算法的设计范式中,我们先递归地将问题分解成子问题,然后再求解子问题,最后将求解结果进行组合得到最终结果.在本文中,我们将重点讨论Java中的快速排序本 ...

  2. java unset_PHP--isset()和unset()函数的用法-Java架构师必看

    isset(PHP3,PHP4,PHP5)isset--检测变量是否设置描述boolPHP isset (PHP 3, PHP 4, PHP 5 ) isset -- 检测变量是否设置 描述 bool ...

  3. java中的dispose函数_[转载]java中的dispose()方法

    这是我第100篇IT技术文章,也正好让我实现了一个完整的从客户端输入参数,使用遗传算法计算生产排程的实例,前端由客户输入种群大小,遗传代数,交叉概率,变异概率,零件数,机器数,时间矩阵,机器矩阵,经运 ...

  4. java中函数的调用,java中如何调用函数

    java动态调用函数,Java 中使用动态代码,java函数调用,java中如何调用函数 如何在 Java 中调用 C 函数 宗薇 [期刊名称]<网络新媒体技术> [年(卷),期]2000 ...

  5. swig c java gemt,利用 SWIG 转换 C/C++ 接口到 Java 接口

    SWIG(Simplified Wrapper and Interface Generator)是一个将C/C++接口转换为其他语言接口的工具,从而可以讲C/C++的库集成到其他语言的系统中.目前SW ...

  6. ctp怎么设置java的编码为GBK_GitHub - yuelong2456/java-ctp: java包装的上期ctp,用swig技术实现。...

    java-ctp java包装的上期ctp,用swig技术实现. 2014-4-7 10:09:11 项目已经搭建好,上传到这里方法还不会.时间比较紧,有空上传上来. 2014-7-31 22:43: ...

  7. java跨函数跳转_C语言中将绝对地址转换为函数指针以及跳转到内存指定位置处执行的技巧...

    1.方法一 要对绝对地址0x100000赋值,我们可以用 (unsigned int  * ) 0x100000 = 1234; 那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做? ...

  8. Android JNI编程(六)——C语言函数指针、Unition联合体、枚举、Typedef别名、结构体、结构体指针...

    版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一:函数指针 1.函数指针顾名思义就是定义一个指针变量指向一个函数,和一级指 ...

  9. java8的函数指针

    转载自  java8的函数指针 这段时间 项目实在是太紧了,没有时间写博客啊.java模式的文章还没有写完,后期在写吧. 最近项目中大量的使用到了远程调用以及回调.是采用反射的方式实现的.担心到大量的 ...

最新文章

  1. 其他算法-浅谈小波变换
  2. 基于中间代码的优化中,循环的查找算法有哪些?循环优化的方法有哪些?举例说明。
  3. nyoj239月老的难题
  4. SAP Leonardo Machine Learning处于deprecated状态的API和其替代者
  5. 聘用计算机高级职称,关于咨询高级职称聘用的问题
  6. NODE安装N管理出错
  7. pat甲级什么水平_转让河北工程设计建筑行业(建筑工程)甲级资质
  8. 公钥与私钥 数字签名是什么?
  9. Javascript倒计时 支持自定义样式
  10. macos怎么装mysql80_Mac下MySQL安装配置教程
  11. 搭建本地git代码管理,实现内网Windows进行代码管理
  12. 淮阴工学院计算机硕士生导师,硕士生导师概况
  13. 曾经以为老去是很遥远的事情
  14. 学习verilog的经典好教材与资料
  15. 杨洋告诉你实时异地容灾的重要性
  16. 被封了?教你如何解封chatgpt账号,中英版都有
  17. 小程序:七巧板拼图世界图案大全
  18. 深度学习 图像识别 三
  19. 51单片机继电器控制修改
  20. php 监听用户退出,php 利用 Inotify监视程序 用于重启服务器进程

热门文章

  1. 两化融合:唐山探路重工业城市智慧转型
  2. 勒索病毒WannaCry(永恒之蓝)
  3. 【李宏毅2020 ML/DL】P24 Semi-supervised
  4. 微信小程序实质是什么? Hybrid App
  5. 【数据结构笔记06】队列及其顺序存储、链式存储
  6. 深入PHP内核之ZVAL
  7. 2021四川高考成绩位次查询,2021年四川高考位次查询及一分一段表排名查询
  8. jsp连接mysql更新数据库代码_JSP连接MySQL数据库代码
  9. Oracle RAC的Failover
  10. JDBC使用总结:增删改查、调用存储过程、执行存储函数、存储过程与存储函数区别分析