Ошибка приведения с GetModuleFileNameW - PullRequest
1 голос
/ 26 октября 2011

Я пытаюсь получить информацию о версии модуля в некотором коде C ++ (в основном это ), и я получаю ошибки времени компиляции.Вот код:

WCHAR fileName[MAX_PATH];
HMODULE module = GetModuleHandle(L"some-module");
DWORD size = GetModuleFileName(module, fileName, MAX_PATH);

И возвращается компилятор:

    error C2664: 'GetModuleFileNameW' : cannot convert parameter 1 from 'WHANDLE' to 
    'HMODULE'
    Conversion from 'void*' to pointer to non-'void' requires an explicit cast

Что здесь происходит?GetModuleHandle возвращает HMODULE, и это задокументированный первый параметр для GetModuleFileName.

Вот версия компилятора, для которой она стоит:

    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
    Copyright (C) Microsoft Corporation.  All rights reserved.

Спасибо!

1 Ответ

4 голосов
/ 26 октября 2011

Должно быть что-то необычное с вашими включениями или вашими библиотеками, потому что это компилируется и работает нормально:

// Scratch.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "windows.h"

int _tmain(int argc, _TCHAR* argv[])
{
    WCHAR fileName[MAX_PATH];
    HMODULE module = GetModuleHandle(L"some-module");
    DWORD size = GetModuleFileName(module, fileName, MAX_PATH);
    return 0;
}
...