2017-10-08 81 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上閱讀更多關於它的信息。

相關問題