Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么dbghelp.h';s符号相关函数始终返回126个错误代码?_C++_Windows_Winapi_Dbghelp - Fatal编程技术网

C++ 为什么dbghelp.h';s符号相关函数始终返回126个错误代码?

C++ 为什么dbghelp.h';s符号相关函数始终返回126个错误代码?,c++,windows,winapi,dbghelp,C++,Windows,Winapi,Dbghelp,当我尝试使用函数SymbolFromName()e SymbolFromAddress()时,返回代码总是返回126(未找到模块),代码是: #include<dbghelp.h> #include <iostream> #include <Windows.h> #include <windows.h> #include <debugapi.h> #include <WinBase.

当我尝试使用函数SymbolFromName()e SymbolFromAddress()时,返回代码总是返回126(未找到模块),代码是:

    #include<dbghelp.h>
    #include <iostream>
    #include <Windows.h>
    #include <windows.h>
    #include <debugapi.h>
    #include <WinBase.h>
    
    using namespace std;

    int main(){
    DWORD  error;
    HANDLE hProcess;

    SymSetOptions(SYMOPT_UNDNAME | SYMOPT_DEFERRED_LOADS);

    hProcess = GetCurrentProcess();

    if (!SymInitialize(hProcess, NULL, TRUE))
    {
        // SymInitialize failed
        error = GetLastError();
        cout << "SymInitialize returned error " << error << endl;;
        return FALSE;
    }}
    

    hProcess = GetCurrentProcess();

    SymSetOptions(SYMOPT_UNDNAME | SYMOPT_DEFERRED_LOADS);
    SymInitialize(hProcess, NULL, TRUE);

    TCHAR szSymbolName[MAX_SYM_NAME];
    ULONG64 buffer[(sizeof(SYMBOL_INFOW) +
        MAX_SYM_NAME * sizeof(TCHAR) +
        sizeof(ULONG64) - 1) /
        sizeof(ULONG64)];
    PSYMBOL_INFO pSymbol = (PSYMBOL_INFO)buffer;

    _tcscpy_s(szSymbolName, MAX_SYM_NAME, TEXT("mainCRTStartup")); // i  
    know the entrypoint name by using >>nm command in windows for extract 
    symbol
    pSymbol->SizeOfStruct = sizeof(SYMBOL_INFO);
    pSymbol->MaxNameLen = MAX_SYM_NAME;

    if (SymFromName(hProcess, szSymbolName, pSymbol)){
       cout << pSybol->address
    } // this return always 126

    }

我还尝试使用不同的符号名称,如main、mainCRTStartup、wWinMain、WinMain等,但没有任何结果

我可以复制它,但是如果我将
“WinMainCRTStartup”
替换为
“main”
,它可以工作。您确定您的exe文件包含符号
WinMainCRTStartup
?控制台程序不使用此符号,但它使用的是
mainCRTStartup
。我还尝试了main、wmain、maincrtup、wmainCRTSurtup以及其他,结果是
mainCRTStartup
,而不是
maincrturtup
,请检查。否则,显示代码中有一些错误(尽管只有一些头文件和括号)。解决问题后,
mainCRTStartup
对我来说运行良好,但
WinMainCRTStartup
没有。因此,您确定您的exe文件包含符号
WinMainCRTStartup
?我可以复制这个,但是如果我用
“main”
替换
“WinMainCRTStartup”
,它会工作。您确定您的exe文件包含符号
WinMainCRTStartup
?控制台程序不使用此符号,但它使用的是
mainCRTStartup
。我还尝试了main、wmain、maincrtup、wmainCRTSurtup以及其他,结果是
mainCRTStartup
,而不是
maincrturtup
,请检查。否则,显示代码中有一些错误(尽管只有一些头文件和括号)。解决问题后,
mainCRTStartup
对我来说运行良好,但
WinMainCRTStartup
没有。因此,您确定您的exe文件包含符号
WinMainCRTStartup
 00401300 T _WinMainCRTStartup
 00401460 T _main
 004012e0 T _mainCRTStartup