没有对Callstack库的未定义引用的麻烦

问题描述 投票:1回答:1

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

  1. cpp文件:mycallstack.cpp #include <utils/CallStack.h> extern "C" void dumping_callstack() { CallStack stack("haha"); }
  2. mycallstack.h void dumping_callstack();
  3. test.c的 #include <mycallstack.h> main() { dumping_callstack(); }
  4. android.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()'
android c++ c callstack
1个回答
0
投票

CallStack::CallStackCallStack::~CallStack的实现未提供给编译器/链接器。您可能忘记将其链接到相应的目标文件/库,我建议您阅读文档,可能有一些关于链接的信息。有时它可以帮助用-static开关编译它,这使得可执行文件几乎是独立的,一些库甚至需要静态链接。

也许情况是,实现不适用于发布版本,我认为CallStack-class只能用于调试。

© www.soinside.com 2019 - 2024. All rights reserved.