首页 > 解决方案 > 未定义对 Callstack 库的引用的问题

问题描述

我尝试将cpp如下文件构建为 Android 平台上的可执行文件。因此,通过调用 dumping_callstack(),我可以在运行时获取可执行文件的调用堆栈。但是有一些错误。</p>

  1. cpp 文件:mycallstack.cpp

    #include <utils/CallStack.h>
    extern "C" void dumping_callstack()
    {
         CallStack stack("haha");
    }
    
  2. mycallstack.h

    void dumping_callstack();
    
  3. 测试.c

    #include <mycallstack.h>
    
    main()
    {
       dumping_callstack();
    } 
    
  4. 安卓.mk

    LOCAL_SRC_FILES += mycallstack.cpp
    LOCAL_SHARED_LIBRARIES := libc libcutils liblog libutils
    

然后编译。

error: undefined reference to 'android::CallStack::CallStack(char const*,int)'
error: undefined reference to 'android::CallStack::~CallStack()'

标签: androidc++ccallstack

解决方案


在 android 9.0 中,您应该使用libutilscallstack. 查看“android/system/core/libutils/Android.bp”了解更多详情。


推荐阅读