我尝试在Android平台上构建如下cpp
文件到可执行文件。因此,通过调用dumping_callstack(),我可以在运行时获取可执行文件的调用堆栈。但是有一些错误。
#include <utils/CallStack.h>
extern "C" void dumping_callstack()
{
CallStack stack("haha");
}
void dumping_callstack();
#include <mycallstack.h>
main()
{
dumping_callstack();
}
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()'
CallStack::CallStack
和CallStack::~CallStack
的实现未提供给编译器/链接器。您可能忘记将其链接到相应的目标文件/库,我建议您阅读文档,可能有一些关于链接的信息。有时它可以帮助用-static
开关编译它,这使得可执行文件几乎是独立的,一些库甚至需要静态链接。
也许情况是,实现不适用于发布版本,我认为CallStack
-class只能用于调试。