我正在尝试通过一些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;
}