C++ 你能告诉我这有什么问题,怎么解决吗?

C++ 你能告诉我这有什么问题,怎么解决吗?,c++,data-conversion,C++,Data Conversion,我有这个代码,我已经试着让它工作了几个小时 DWORD GetModuleNamePointer(LPSTR LPSTRModuleName, DWORD __DwordProcessId) { MODULEENTRY32 lpModuleEntry = {0}; HANDLE hSnapShot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, __DwordProcessId); if(!hSnapShot)

我有这个代码,我已经试着让它工作了几个小时

DWORD GetModuleNamePointer(LPSTR LPSTRModuleName, DWORD __DwordProcessId)
{ 
    MODULEENTRY32 lpModuleEntry = {0};
    HANDLE hSnapShot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, __DwordProcessId);
    if(!hSnapShot)
        return NULL;  
    lpModuleEntry.dwSize = sizeof(lpModuleEntry);
    BOOL __RunModule = Module32First( hSnapShot, &lpModuleEntry );
    while(__RunModule)
    {
        if(!strcmp(lpModuleEntry.szModule, LPSTRModuleName ) )
        {
            CloseHandle( hSnapShot );
            return (DWORD)lpModuleEntry.modBaseAddr;
        }
        __RunModule = Module32Next( hSnapShot, &lpModuleEntry );
    }
    CloseHandle( hSnapShot );
    return NULL;
}
当我试图从这一行编译它时,我得到了一个错误

返回(DWORD)lpModuleEntry.modBaseAddr

这就是错误所在

[Error] invalid conversion from 'BYTE* {aka unsigned char*}' to 'DWORD {aka long unsigned int}' [-fpermissive]

我该怎么做才能解决这个问题?老实说,我不知道。

似乎成员
modBaseAddr
是一个指针。您无法将其转换为
DWORD
。请不要使用
NULL
作为指针以外的任何内容的返回
NULL
应表示空,并且不能有空DWORD,因为它必须有值。对于指针来说,这是有意义的,因为如果说指针不指向任何东西,那么指针就不指向任何东西了。哪一行代码会出现这种错误?为什么不将返回类型从
DWORD
更改为
BYTE*
,考虑到函数的名称,这将更有意义,因为您使用NULL作为返回值?使用
BYTE*
作为返回值并删除强制转换将解决这一问题。在这种情况下,您一定是做错了什么。似乎成员
modBaseAddr
是一个指针。您无法将其转换为
DWORD
。请不要使用
NULL
作为指针以外的任何内容的返回
NULL
应表示空,并且不能有空DWORD,因为它必须有值。对于指针来说,这是有意义的,因为如果说指针不指向任何东西,那么指针就不指向任何东西了。哪一行代码会出现这种错误?为什么不将返回类型从
DWORD
更改为
BYTE*
,考虑到函数的名称,这将更有意义,因为您使用NULL作为返回值?使用
BYTE*
作为返回值并删除强制转换将解决这一问题。那样的话,你一定是做错了什么。