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*
作为返回值并删除强制转换将解决这一问题。那样的话,你一定是做错了什么。