zoukankan      html  css  js  c++  java
  • JNI使用问题记录

    此文章包含Android JNI学习过程中的遇到的各种错误记录和学习总结。

    1.错误:java.lang.UnsatisfiedLinkError: Native method not found: com.example.test.InterfaceJni.init:()V

      已经生生so库,提示找不到native方法。

     解决方法:

    • 看.h或者.cpp文件中,方法名是否正确,Java_包名_类名_方法名(参数表)。
    • .h或者.cpp文件中native方法声明和定义必须包含在extern "C"{}中。

    2.JNI_OnLoad()

     在System.loadLibrary时,调用此函数,返回JNI版本,不同的版本支持的特性可能不同。也可以做一些初始化的动作。

    3.android打印。在c++层或者c中的打印(print),不能在logcat中查看。需要调用android/log.h中的log打印:

        __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__)  :ANDROID_LOG_DEBUG是打印级别,TAG是打印的标签,__VA_ARGS__是打内容。

     可以这样使用:

      #include <android/log.h>

      #define TAG "TEST_CPP"

      #define  LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__)

      使用:LOGD("In C: ---------");

      

      另外,链接时可能会提示:error: undefined reference to '__android_log_print',是因为没有加入共享库,在mk文件中加入:

        LOCAL_LDLIBS    := -llog

    4.修改Android ping.c代码,增加socket通信,增加头文件:#include <cutils/sockets.h>,编译出错:undefined reference 。

      解决方法:修改Android.mk,增加:LOCAL_SHARED_LIBRARIES+= libcutils

  • 相关阅读:
    mysql排序对空值的处理
    Lambda表达式要点
    nginx Provisional headers are shown
    JAVA使用POI如何导出百万级别数据(转)
    idea 自定义注释模板
    idea使用配置
    Caused by: java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED! Thread Name:
    Java HotSpot(TM) 64-Bit Server VM warning
    dubbo-admin管理平台搭建
    zookeeper安装
  • 原文地址:https://www.cnblogs.com/nwxueyu-up/p/3510155.html
Copyright © 2011-2022 走看看