我用這個編譯器:http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.7.2/32-bit/threads-posix/sjlj/x32-4.7.2-release-posix-sjlj-rev7.7z儘管返回true,SymInitialize將GetLastError設置爲2,這意味着什麼?
代碼:
#include <windows.h>
#include <iostream>
#include <imagehlp.h>
int main() {
HANDLE process = GetCurrentProcess();
if (GetLastError()) {
printf("GetCurrentProcess failed: %d\n", GetLastError());
return 1;
}
if (!SymInitialize(process, NULL, TRUE)) {
printf("SymInitialize failed: %d\n", GetLastError());
return 1;
} else if (GetLastError()) {
printf("SymInitialize returned true but failed nonetheless: %d\n", GetLastError());
return 1;
}
}
它返回: 「該系統找不到指定的文件」 SymInitialize returned true but failed nonetheless: 2
錯誤沒有2種手段什麼文件,我不能把它放在這裏的任何環境。 我從文檔中瞭解到,如果此函數成功GetLastError 必須爲零。
在文檔中,它說GetLastError *必須返回零,如果函數成功?據我所知,它只是說如果函數失敗,GetLastError會給你更多關於錯誤的信息。所以最有可能的是,如果函數成功,函數不會清除錯誤代碼。 – jalf