c++ - GetModuleFileNameW 的转换错误

标签 c++ c casting compiler-errors

我试图获取某些 C++ 代码中模块的版本信息(基本上是 this ),但遇到编译时错误。代码如下:

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 记录的第一个参数。

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

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

谢谢!

最佳答案

您的包含或库一定发生了一些奇怪的事情,因为它在这里编译和运行良好:

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

关于c++ - GetModuleFileNameW 的转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7897677/

相关文章:

c - vsnprintf 给出了 x86_64 的段错误,但不是 64 位机器

java - 如何在 OpenCL 中将 int 转换为 float?

c++ - 在 C++ 中对结构 vector 进行排序

c++ - 通过对象比较而不是使用仿函数在集合中查找 C++ 对象

c++ - 使用虚拟基类在 C++ 中向下转型

c - C语言如何在MPI中调用same rank?

c - 通过 C 中的指针传递的二维数组

android - Kotlin 如何将 Long 转换为 Int?为超出范围的值获取不同的输出

c++ - 如何在 C++ 中标记要转换到哪个类?

c++ - 为什么同样的for循环第二次跑得更快?