undefined reference to `__android_log_print‘

这篇具有很好参考价值的文章主要介绍了undefined reference to `__android_log_print‘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.背景

今天给JNI的C代码添加“__android_log_print”日志打印,发现报错。
这里对原因进行分析

2.报错内容

undefined reference to `__android_log_print‘,android

Build command failed.
Error while executing process C:\Users\wanglei\AppData\Local\Android\Sdk\ndk-bundle\ndk-build.cmd with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=D:\learn\AndroidProject\JNIDemo\ccalljava\src\main\jni\Android.mk NDK_APPLICATION_MK=D:\learn\AndroidProject\JNIDemo\ccalljava\src\main\jni\Application.mk APP_ABI=arm64-v8a NDK_ALL_ABIS=arm64-v8a NDK_DEBUG=1 APP_PLATFORM=android-26 NDK_OUT=D:/learn/AndroidProject/JNIDemo/ccalljava/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=D:\learn\AndroidProject\JNIDemo\ccalljava\build\intermediates\ndkBuild\debug\lib ccalljava}
[arm64-v8a] Compile        : ccalljava <= ccalljava.c
[arm64-v8a] SharedLibrary  : libccalljava.so

D:/learn/AndroidProject/JNIDemo/ccalljava/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/ccalljava/ccalljava.o: In function `Java_com_stone_ccalljava_JNI_callbackAdd':
D:/learn/AndroidProject/JNIDemo/ccalljava/src/main/jni/ccalljava.c:28: undefined reference to `__android_log_print'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [D:/learn/AndroidProject/JNIDemo/ccalljava/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libccalljava.so] Error 1

3.问题分析

3.1 本地配置

build.gradle中

undefined reference to `__android_log_print‘,android

        ndk {
            ldLibs "log"
        }

CCallJava.c(JNI文件中)

undefined reference to `__android_log_print‘,android

3.2 缺少的配置

undefined reference to `__android_log_print‘,android

LOCAL_PATH :=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=ccalljava
LOCAL_SRC_FILES :=ccalljava.c
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)

4.总结

so文件没有没有添加log的链接库,添加“LOCAL_LDLIBS := -llog”即可文章来源地址https://www.toymoban.com/news/detail-808277.html

到了这里,关于undefined reference to `__android_log_print‘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Dev C++中出现 undefined reference to XXX 错误的解决方式

            主函数中调用在其他文件中定义的函数,编译报错:未定义的引用xxx。         原理:编译器在生成可执行文件的过程包括预处理、编译、汇编、链接,这4个过程,这个问题一般出现在 链接 过程,所谓的链接过程,就是把不同的目标文件粘合在一起,生成一

    2024年02月03日
    浏览(41)
  • openssl库HMAC使用 undefined reference to `HMAC_CTX_new‘

    由于使用的openssl库版本的问题 HMAC_CTX *HMAC_CTX_new(void) 为OpenSSL 1.1.0后开始引入的函数,老的库要使用 void HMAC_CTX_init(HMAC_CTX *ctx) 。 函数原型 官网介绍 使用 HMAC的实现在crypto/hmac/hmac.c中,如下: evp_md指明HMAC使用的摘要算法; key为秘密密钥指针地址; key_len为秘密密钥的长度;

    2024年02月11日
    浏览(50)
  • yolov8使用C++推理的流程及注意事项  undefined reference to `xxxxx‘

    1.下载yolov8项目源码GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch ONNX OpenVINO CoreML TFLite  2.下载opencvReleases - OpenCV,建议版本=4.7.0,选择下载源码, windows版本由于使用的编译器与我们所使用的mingw不一致,后续会出现错误,所以我们选择自己编译 3.下载cmake编译工具,添加到环

    2024年02月11日
    浏览(36)
  • Qt 编译纯c的C99的项目, error: undefined reference to `f()‘

    把Cpp的后缀该为C是什么样的 尝试引用一个奇门排盘的c程序,在git上找到的叫cqm, 然后总是报错 error: undefined reference to `f()\\\' 很是郁闷 于是新建了个项目试验一下,终于摸清了需要命名空间。 后来这么写就可以了 a.h  a.cpp (c文件不支持命名空间!) test.cpp 引用的cpp

    2024年02月07日
    浏览(48)
  • 调用OpenCV库出现: undefined reference to `xxxxx‘ 的解决办法(使用MinGW编译器)

    我的CMakeLists.txt如下: cpp代码如下: 因为我的c++程序采用mingw64编译,所以使用 之后,总是出现undefined reference to cv::Mat::Mat()等一系列的undefined reference to XXX 原因是没有正确链接到动态库。或者之前有安装其他版本的opencv 重新编译一份OpenCV的源码再使用 编译过程参考: https

    2024年02月05日
    浏览(60)
  • 从链接器的角度详细分析g++报错: (.text+0x24): undefined reference to `main'

    /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start\\\': (.text+0x24): undefined reference to `main\\\' collect2: error: ld returned 1 exit status    在使用g++编译链接两个C++源文件main.cpp以及VecAdd.cpp时出现了以上编译报错。main.cpp中引用了VecAdd.cpp中定义的函数vecAdd来实现两个

    2024年02月08日
    浏览(41)
  • centos7 编译bluez ARM版本及undefined reference to `g_thread_new‘

            在我辛辛苦苦编译成功 glib 库后(看我上一篇文章 centos7 glib2.0 arm版本的编译),以为可以顺利编译我的 bluez ARM 版本,结果出现了最后一个错误(其中一个是私有库里的),如: 就是这个 g_thread_new 没有找到实现,然后在网上搜了半天,都说是 glib 库里的实现,但

    2024年02月07日
    浏览(36)
  • undefined reference to `dlopen‘ ‘SSL_library_init‘ `X509_certificate_type‘

    使用Crow的时候需要注意crow依赖asio依赖OpenSSL,asio要求1.22以上版本,我使用的是1.26.0; 这个版本的asio要求OpenSSL是1.0.2,其他版本我得机器上编不过,ubuntu上默认带的OpenSSL是1.1.1; 所以我下载了OPENSSL1.2.0重装,地址: https://www.openssl.org/source/old/ 编译cpp启用Crow的SSL时会出现一些

    2024年02月13日
    浏览(37)
  • error: undefined reference to ‘cv::Mat::~Mat()‘解决AndroidStudio集成OpenVC出现的编译报错问题

    本来这种类型的博客不是笔者想写的,不过这个问题,笔者经过网上一番搜索却没有可用的解决方案,因此分享出来帮助大家填坑。 OpenCV官方的Android SDK在这里下载,集成方法就不多介绍了,可以看这两位博主的文章:  小小情意的​ Android 接入 OpenCV库的三种方式 ​  春末

    2024年02月07日
    浏览(44)
  • Linux上编译sqlite3库出现undefined reference to `sqlite3_column_table_name‘

    作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?   在Ubuntu 18上编译sqlite3库后在运行程序时出现undefined reference to `sqlite3_column_table_name’的错误。网上的说法是说缺少SQLITE_ENABLE_COLUMN_METADATA的宏定义,解决办法是在sqlite3.c增加一行代码:   这个解决

    2024年02月05日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包