IntelliSense:类型“const char *”的参数与“LPCWSTR”类型的参数不兼容

时间:2015-07-13 10:24:24

标签: c++ c visual-studio intellisense

我收到以下错误:

  

类型“const char *”的参数与“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,但它仍然在路径名

中显示错误
#define MAX_PATH 4096

有什么问题?

3 个答案:

答案 0 :(得分:4)

GetFullPathName不接受char *。查看文档,需要LPTSTRLPCTSTR

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

另外,我不知道你为什么定义MAX_PATH。这是一个Windows常量,所以你不应该重新定义它。

答案 1 :(得分:0)

我同意@tenfour, 如果您仍希望使用ANSI字符强制执行系统工作,那么char *会起作用,请将代码更改为直接调用GetFullPathNameA
或者,更好的是,在Project-> Properties-> Configuration Properties-> General-> Character Set下使用unicode字符集。

答案 2 :(得分:0)

我遇到了同样的问题(VS2017)。将项目更改为可编译32位,并且编译很棒!我的问题是我删除了目录中的所有多余文件以进行清理,并且由于我是在64位计算机上构建的,因此默认为64位。