[英]Why I can't get directory name
我使用Win API的程序:
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
using namespace std;
int _main(int argc, _TCHAR* argv[]) {
char *fileExt = NULL;
TCHAR szDir[MAX_PATH];
GetFullPathName(argv[0], MAX_PATH, szDir, &fileExt);
printf("Full path: %s\nFilename: %s\n", szDir, fileExt);
return 0;
}
我在這里和這里使用示例,但是我收到一條錯誤消息:“ char *”類型的參數與“ LPWSTR”類型的參數不兼容。
我的錯誤在哪里?
如下定義的字符串稱為ANSI字符串。
char* fileExt = NULL;
並且如下定義的字符串可以是ANSI字符串或Unicode字符串。 您的項目是使用UNICODE/_UNICODE
宏編譯的,因此它是Unicode字符串。
TCHAR szDir[MAX_PATH];
您不能將它們混合在一起,有關VC ++中的數據類型標識符(例如TCHAR
和LPCTSTR
,請參閱本文 。
我對您的代碼進行了一些修改,如下所示。
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR *fileExt = NULL;
TCHAR szDir[MAX_PATH];
GetFullPathName(argv[0], MAX_PATH, szDir, &fileExt);
_tprintf(_T("Full path: %s\nFilename: %s\n"), szDir, fileExt);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.