2017-10-08 20 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; 
} 

、私はそれはそれを行うと、本当に知りたいのですが、なぜ見当がつかない。それはあまりにもあなたの人の誰かが私にこれに対する解決策を提供することができますあまりしていない場合は?ありがとう。

注:私はあなたがUnicodeサポートを使用してコードをコンパイルしているなど

+2

スクリーンショットはありません。 –

+0

「WCHAR [256]をconst char *に変換できません」のどの部分がわかりませんか?タイプYへのポインタをタイプYへのポインタに変換することはできません(Yがスーパークラスなどでない限り)。C++はこのように動作しません。 –

+0

エラーメッセージのスクリーンショットは表示されず、どの行に不平を言っているのかを教えてください。そして、[mcve]を提供してください。あなたが提供するコードに 'ModuleName'の定義はありません。 –

答えて

1

理解するのは簡単だった場合ので、私の質問に私にフィードバックを与えるこのフォーラムにちょっと新しいです。このモードでは、文字はWCHARSと呼ばれる16ビットエンティティです。

strcmpcharへのポインタを受け付けるので、正しくコンパイラはポインタが互換性がないと訴える。

WCHARを除き、strcmpのような機能があります。wcscmpという機能があります。また、_tcscmpという関数があり、コンパイルモードが何であっても動作するはずです。

MSDNで詳しく読むことができます。