智能感知:类型 "const char *" 的参数与类型 "LPCWSTR" 的参数不兼容

IntelliSense: argument of type "const char *" is incompatible with parameter of type "LPCWSTR"

本文关键字:参数 类型 不兼容 LPCWSTR char 感知 const 智能      更新时间:2023-10-16

我得到以下错误:

argument of type "const char *" is incompatible with parameter of type "LPCWSTR"

下面是我的代码:
static char *getFmuPath(const char *fileName) {
    char pathName[MAX_PATH];
    int n = GetFullPathName(fileName, MAX_PATH, pathName, NULL);
    return n ? strdup(pathName) : NULL;
}

我已经声明了MAX_PATH,但是在pathname

中仍然显示错误
#define MAX_PATH 4096

GetFullPathName不带char *。看一下文档,它需要LPTSTRLPCTSTR

根据您的构建设置,LPTSTR和相关类型将变成char* (ANSI构建)或wchar_t* (Unicode构建)。您正在构建Unicode。

也,我不知道你为什么要定义MAX_PATH

我同意@tenfour,如果你仍然想强制你的系统工作与ANSI字符,所以char*将工作,改变你的代码直接调用GetFullPathNameA
或者,更好的是,在Project->Properties->Configuration Properties->General-> character set下使用unicode字符集。

我也有同样的问题(VS2017)。将项目更改为编译32位,它编译得很棒!我的问题是,我删除了目录中所有额外的文件来清理它,它默认为64位,因为我是在64位机器上构建的。