vergleich von CHAR und WCHAR bereitet Probleme



  • Erstmal der Code:

    DWORD GetModuleBaseAddress(const char *DllName, DWORD gamePID)
    {
    	MODULEENTRY32 me32;
    	DWORD gameDllBase = NULL;
    	HANDLE snapMod;
    
    	if (gamePID == 0) return FALSE;
    	snapMod = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, gamePID);
    	me32.dwSize = sizeof(MODULEENTRY32);
    	if (Module32First(snapMod, &me32)){
    		do
    		{
    			if (strcmp(DllName, (const char*)me32.szModule) == 0){
    				CloseHandle(snapMod);
    				gameDllBase = (DWORD) me32.modBaseAddr;
    				break;
    			}
    		}while(Module32Next(snapMod,&me32));
    	}
    	return gameDllBase;
    }
    

    Ich möchte die Basisaddresse eines Modules, herausfinden.
    Die Funktion liefert mir jedoch, egal welches Modul ich suche, immer "NULL" zurück.

    Nach einiger Debuggingzeit weiß ich dass der Fehler in folgender Abfrage liegt

    if (strcmp(DllName, (const char*)me32.szModule) == 0){
    

    "me32.szModule" ist soweit ich weiß "WCHAR" und "DLLName" ist vom typ "char*".
    Irgendwie kommt er mit der Typenumwandlung nicht klar.
    Bitte um Lösungsvorschläge 😉



  • if (!_stricmp(me32.szModule, DllName))
    {
        CloseHandle(snapMod);
        gameDllBase = (DWORD) me32.modBaseAddr;
        break;
    }
    

    Versuchs mal so.



  • VC++ gibt mir folgende Meldung zurück:

    Konvertierung des Parameters 1 von 'WCHAR [256]' in 'const char *' nicht möglich
    Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    


  • cbacon93 schrieb:

    VC++ gibt mir folgende Meldung zurück:

    Konvertierung des Parameters 1 von 'WCHAR [256]' in 'const char *' nicht möglich
    Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    

    Kompilierst du eventuell als Unicode?
    Eigentlich gibt es für alles eine Ascii und eine Unicode Version.



  • Jap tuhe ich und jap das war der Fehler 😉

    Danke für die Hilfe!



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • omg leute, mir ist zum heulen zu mute...


Anmelden zum Antworten