【发布时间】:2016-10-20 05:48:58
【问题描述】:
我正在尝试使用 MingW 在 Windows 上用 c++ Qt 编写崩溃报告。我参考了https://spin.atomicobject.com/2013/01/13/exceptions-stack-traces-c/
但我的代码无法编译并给出以下错误-
我在带有 Qt 5.4.0 mingw 的 Windows 10 上使用此代码。我在编译这段代码时遇到了一些错误。
错误:未定义引用_imp__SymInitialize@12′
error: undefined reference to_imp__SymGetModuleBase@8′
错误:未定义对_imp__SymFunctionTableAccess@8′
error: undefined reference to_imp__StackWalk@36' 的引用
错误:未定义对`_imp__SymCleanup@4′的引用
这些错误来自以下代码。
void windows_print_stacktrace(CONTEXT* context)
{
SymInitialize(GetCurrentProcess(), 0, true);
STACKFRAME frame = { 0 };
/* setup initial stack frame */
frame.AddrPC.Offset = context->Eip;
frame.AddrPC.Mode = AddrModeFlat;
frame.AddrStack.Offset = context->Esp;
frame.AddrStack.Mode = AddrModeFlat;
frame.AddrFrame.Offset = context->Ebp;
frame.AddrFrame.Mode = AddrModeFlat;
while (StackWalk(IMAGE_FILE_MACHINE_I386 ,
GetCurrentProcess(),
GetCurrentThread(),
&frame,
context,
0,
SymFunctionTableAccess,
SymGetModuleBase,
0 ) )
{
addr2line(icky_global_program_name, (void*)frame.AddrPC.Offset);
}
SymCleanup( GetCurrentProcess() );
}
imagehlp.dll 负责上述功能。 谁能告诉我如何解决此类错误。
提前致谢。
【问题讨论】: