2015-01-14 103 views
0

我的计划,我在那里与Win API工作:为什么我不能让目录名

​​

我使用例如由herehere,但我得到一个错误信息:类型的参数“字符*“与”LPWSTR“类型的参数不兼容。

我的错误在哪里?

+0

你混合了ANSI和UNICODE,[本条](http://www.codeproject.com/Articles/76252/What-are-TCHAR-WCHAR-LPSTR-LPWSTR-LPCTSTR-etc)解释了差异。 – kennyzx

回答

3

定义如下的字符串称为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; 
} 
相关问题