参数与参数不兼容?

时间:2017-10-08 17:07:08

标签: c++ windows

我在代码中遇到这些错误,并且我试图阅读错误的文档,但我很难理解它。

错误:

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;
}

就像我说的那样,我不知道为什么会这样做而且真的很想知道。如果对你们来说不是太多,那么有人能为我提供解决方案吗?感谢。

注意:我是这个论坛的新手,所以如果它易于理解等,请给我反馈我的问题。

1 个答案:

答案 0 :(得分:1)

您正在使用Unicode支持编译代码。在此模式下,字符是16位实体,称为WCHARS

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

除了wcscmp之外,还有一个名为strcmp的函数,类似于WCHAR。此外,还有一个名为_tcscmp的函数,无论您的编译模式是什么,它都可以正常工作。

您可以在MSDN上了解更多相关信息。