m0_73502539 2023-03-04 23:42 采纳率: 33.3%
浏览 14
已结题

安卓jni调用libusb问题

原装代码拖进去能直接编译成功,但是要jni调用就得写jni函数声明,
加上 extern "c"声明和函数就报错

  • 写回答

1条回答 默认 最新

  • 「已注销」 2023-03-05 00:09
    关注

    “Devil组”引证GPT后的撰写:
    JNI是一种Java调用本地代码的机制,需要使用C/C++编写本地代码,并且需要与Java代码进行交互,其中涉及到一些语言特性和约定。可能有以下几个原因导致你遇到的问题:

    缺少头文件
    如果你需要在JNI中调用C/C++函数,需要包含相应的头文件,例如在JNI中调用标准库函数,需要包含<stdio.h><stdlib.h>等头文件。如果头文件未包含,则编译器将无法识别函数声明,导致编译错误。
    
    编译器不支持C++语言特性
    在C++中,函数名会根据其参数类型和个数进行重载,因此在C++中调用本地函数时,需要使用extern "C"语言特性来指示编译器使用C语言约定来链接函数。如果在C++代码中未使用extern "C"语言特性声明本地函数,则会导致编译错误。
    
    函数签名不匹配
    在JNI中,本地函数的签名需要与Java代码中声明的JNI函数签名匹配。如果函数签名不匹配,则会导致编译错误。要确保本地函数的签名与JNI函数的签名匹配,可以使用JNI的命令行工具javah自动生成JNI函数的声明,这样可以避免手动编写JNI函数声明时出现的错误。
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月26日
  • 创建了问题 3月4日

悬赏问题

  • ¥20 ic卡dump文件校检码解密
  • ¥15 关于:接收到的数据不是有效的JSON格式
  • ¥15 apdl语言如何增加受力分析
  • ¥15 算法对比:学校优化算法与蚁群算法对比
  • ¥15 机电一体化系统设计说明书
  • ¥20 sgy数据提取地震波速,有人能回答吗小馋
  • ¥20 c#实现打开word的功能,并且需要安装成windows服务,word打不开怎么办
  • ¥15 python用ARIMA时间预测模型预测数据出错,急!
  • ¥30 为什么后端传给前端vue的河流json数据不在地图中显示出来
  • ¥50 关于弹性波动方程求解的问题: