2017-10-08 80 views
-1

我在我的代码中看到这些错误,并试图阅读错误的文档,但我很难理解它。参数与参数不兼容?

的错误:

Errors

这是我的代码:

#include <iostream> 
#include <Windows.h> 
#include <stdio.h> 
#include <tchar.h> 
#include <tlhelp32.h> 
#include "Source.h" 

using namespace std; 
DWORD procID; 

DWORD GetModuleBaseAddress(LPSTR ModuleName) 
{ 

    MODULEENTRY32 module32; 
    module32.dwSize = sizeof(MODULEENTRY32); //Module32First will fail if you don't do this 
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, procID); 
    Module32First(hSnap, &module32); 
    if (hSnap == INVALID_HANDLE_VALUE) //just a check 
     return 0; 
    do //iterate through modules 
    { 
     if (!strcmp(module32.szModule, ModuleName)) //if there is a match 
      break; 
    } while (Module32Next(hSnap, &module32)); 
    CloseHandle(hSnap); 

    return (DWORD)module32.modBaseAddr; 
} 

就像我说的,我不知道为什么它确实是和真的想知道。如果它不是太多,你们有人能为我提供解决方案吗?谢谢。

注:我还挺新的这个论坛,所以给我的反馈对我的问题,如果它是很容易理解等

+2

没有截图。 –

+0

“不能将WCHAR [256]转换为const char *”的部分,你不明白?你不能将一个指针转换为一个类型为Y的指针(除非Y是一个超类,等等)。C++不能以这种方式工作。 –

+0

没有错误信息的屏幕截图,并告诉我们它抱怨哪一行......并提供[mcve] - 您提供的代码中没有定义“ModuleName”。 –

回答

1

你支持Unicode编译代码。在这种模式下,这些字符是称为WCHARS的16位实体。

由于strcmp接受指向char的指针,编译器正确地抱怨指针不兼容。

有一个叫做wcscmp的功能,就像strcmp,除了WCHAR s。另外,还有一个叫做_tcscmp的函数,无论你的编译模式是什么,它都可以工作。

您可以在MSDN上阅读更多关于它的信息。

相关问题