我收到以下错误:
“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
问题是什么 ?
2 回答
GetFullPathName不接受
char *
. 查看文档,需要LPTSTR
和LPCTSTR
.根据您的构建设置,
LPTSTR
和相关类型将变为char*
(ANSI构建)或wchar_t*
(Unicode构建) . 您正在构建为Unicode .另外,我不知道你为什么定义
MAX_PATH
. 这是Windows常量,因此您不应该重新定义它 .我同意@tenfour,如果您仍希望使用ANSI字符强制执行系统工作,那么char *将起作用,将代码更改为直接调用
GetFullPathNameA
或者,更好的是,在Project-> Properties-> Configuration Properties-> General-> Character Set下使用unicode字符集 .