Windows 上 C++ Mingw 中的崩溃报告

Abh*_*bhi 5 c c++ windows qt mingw

我正在尝试使用 MingW 在 Windows 上用 c++ Qt 编写崩溃报告。我参考了https://spin.atomicobject.com/2013/01/13/exceptions-stack-traces-c/ \n但是我的代码无法编译并给出以下错误 - \n我在 Windows 10 上使用此代码Qt 5.4.0 mingw。我在编译此代码时遇到一些错误。\n错误:对_imp__SymInitialize@12\xe2\x80\xb2\nerror: undefined reference to_imp__SymGetModuleBase@8\xe2\x80\xb2\n 的未定义引用_imp__SymFunctionTableAccess@8\xe2\x80\xb2\nerror: undefined reference to_imp__StackWalk@36\xe2\x80\xb2\n 的未定义引用错误:对 `_imp__SymCleanup@ 的未定义引用4\xe2\x80\xb2

\n\n

这些错误来自以下代码。

\n\n
void windows_print_stacktrace(CONTEXT* context)\n{\n  SymInitialize(GetCurrentProcess(), 0, true);\n\n  STACKFRAME frame = { 0 };\n\n  /* setup initial stack frame */\n  frame.AddrPC.Offset         = context->Eip;\n  frame.AddrPC.Mode           = AddrModeFlat;\n  frame.AddrStack.Offset      = context->Esp;\n  frame.AddrStack.Mode        = AddrModeFlat;\n  frame.AddrFrame.Offset      = context->Ebp;\n  frame.AddrFrame.Mode        = AddrModeFlat;\n\n  while (StackWalk(IMAGE_FILE_MACHINE_I386 ,\n                   GetCurrentProcess(),\n                   GetCurrentThread(),\n                   &frame,\n                   context,\n                   0,\n                   SymFunctionTableAccess,\n                   SymGetModuleBase,\n                   0 ) )\n  {\n    addr2line(icky_global_program_name, (void*)frame.AddrPC.Offset);\n  }\n\n  SymCleanup( GetCurrentProcess() );\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

imagehlp.dll 负责上述功能。\n有人可以告诉我如何解决此类错误。

\n\n

提前致谢。

\n

Tom*_*low 3

看起来好像您没有将imagehlp.lib导入库添加到您的构建中?即,将其添加到其他平台库的列表中。如果您必须添加包含路径,那么您可能会在同级目录中<imagehlp.h>找到。imagehlp.lib