我使用SymLoadModuleEx
的是Dbghelp.h
VS2015 附带的。该函数只工作一次,并ERROR_INVALID_ADDRESS
为下一次调用返回。当我更改调用顺序以便为另一个 DLL(完全不同,甚至位于其他地方)调用它时,它会工作一次并返回ERROR_INVALID_ADDRESS
给其他人。
这意味着它不是加载DLL的问题,因为无论第一个DLL它都不起作用。
它的初始化如下:
SymSetOptions(SYMOPT_UNDNAME | SYMOPT_LOAD_LINES);
SymInitialize(CurrentProcessHandle = GetCurrentProcess(), nullptr, true);
并且被称为:
SymLoadModuleEx(CurrentProcessHandle, nullptr, DllName.c_str(), nullptr, dwBaseAddr, 0, nullptr, 0);
DllName 正确,dwBaseAddr 为 0。
根据MSDN SymLoadModuleEx 功能,一切都应该正常工作。