[英]2 IntelliSense: argument of type “const char *” is incompatible with parameter of type “LPCWSTR”
[英]IntelliSense: argument of type “const char *” is incompatible with parameter of type “LPCWSTR”
我收到以下錯誤:
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
但它仍然在路徑名中顯示錯誤
#define MAX_PATH 4096
問題是什么 ?
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字符集。
我遇到了同樣的問題(VS2017)。 將項目更改為可編譯32位,並且編譯很棒! 我的問題是我刪除了目錄中的所有多余文件以進行清理,並且由於我是在64位計算機上構建的,因此默認為64位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.