簡體   English   中英

IntelliSense:“ const char *”類型的參數與“ 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 * 看一下文檔,它需要LPTSTRLPCTSTR

根據您的構建設置, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM