You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C2664编译错误:GetModuleHandleW参数类型不兼容问题咨询

报错代码:

uintptr_t gameModule = (uintptr_t)GetModuleHandle("client.dll");

报错信息:
错误 C2664 'HMODULE GetModuleHandleW(LPCWSTR)': 无法将参数 1 从'const char [11]'转换为'LPCWSTR'

报错原因

你的Windows项目默认开启了Unicode字符集,Win32 API会自动适配字符集做宏映射:GetModuleHandle不是实际存在的函数,只是一个宏,在Unicode配置下会被展开为宽字符版本GetModuleHandleW,要求输入参数为宽字符串指针LPCWSTR。你传入的普通字符串"client.dll"是窄字符类型const char*,类型不匹配触发编译错误。

可用解决方案
  • 方案1:修改字符串为宽字符字面量(最推荐,适配项目默认配置,无额外副作用)
    只需要在字符串前加L前缀即可:
    uintptr_t gameModule = (uintptr_t)GetModuleHandle(L"client.dll");
    
  • 方案2:显式调用窄字符版本API
    不修改字符串的前提下,直接调用窄字符版本的GetModuleHandleA:
    uintptr_t gameModule = (uintptr_t)GetModuleHandleA("client.dll");
    
  • 方案3:修改项目全局字符集配置(不推荐,会影响所有Win32 API的默认映射)
    操作步骤:打开项目属性页 → 选择「高级」选项卡 → 字符集下拉选择「使用多字节字符集」 → 保存配置后重新编译即可。

内容的提问来源于stack exchange,提问作者tobee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:24:03