为什么我无法获取目录名称

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;
}

我使用了 here and here 中的示例,但我收到一条错误消息:“char *”类型的参数与“LPWSTR”类型的参数不兼容。

我的错误在哪里?

如下定义的字符串称为 ANSI 字符串。

char* fileExt = NULL;

下面定义的字符串可以是ANSI字符串或Unicode字符串。您的项目是使用 UNICODE/_UNICODE 宏编译的,因此它是一个 Unicode 字符串。

TCHAR szDir[MAX_PATH];

不能混用,VC++中的数据类型标识符如TCHARLPCTSTR的介绍请参考this article .

我对你的代码做了一些修改,如下所示。

#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;
}