我正在尝试通过一些C++代码(基本上是this)获取模块的版本信息,并且遇到了编译时错误。这是代码:

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

编译器返回:

错误C2664:“GetModuleFileNameW”:无法将参数1从“WHANDLE”转换为
'HMODULE'
从“void *”到指针到非“void”的转换需要显式转换

这里发生了什么? GetModuleHandle返回HMODULE,这是GetModuleFileName的第一个参数。

这是其值(value)的编译器版本:

适用于80x86的Microsoft(R)32位C/C++优化编译器版本16.00.30319.01
版权所有(C)Microsoft Corporation。版权所有。

谢谢!

最佳答案

包含或库中一定有一些时髦的事情,因为它可以在此处编译并正常运行:

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

10-07 13:35