我正在尝试使用GetFullPathName
来获取文件的完整路径,但我有错误。错误是:
无法转换参数1来自" char *"到LPCWSTR'。
有人可以帮助我吗?这是代码:
int main(int argc, char **argv)
{
char* fileExt;
char szDir[256];
GetFullPathName(argv[0], 256, szDir, &fileExt);
}
答案 0 :(得分:1)
主要问题是您使用ANSI字符串而不是UNICODE-UTF16。主要解决方案是使用TCHAR
兼容入口点_tmain
,它将与UNICODE或ANSI兼容考虑项目设置,因为ANSI配置的GetFullPathName
将是GetFullPathNameA
和UNICODE GetFullPathNameW
。
实施例
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR* fileExt;
TCHAR szDir[256];
GetFullPathName(argv[0], 256, szDir, &fileExt);
return 0;
}
要在程序中显示ANSI或UNICODE字符串,您可以在主函数的开头使用此语句
#if defined(UNICODE) || defined(_UNICODE)
#define consoleOut std::wcout
#else
#define consoleOut std::cout
#endif
将字符串显示为
consoleOut << szDir << std::endl;
整个计划将是
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#if defined(UNICODE) || defined(_UNICODE)
#define consoleOut std::wcout
#else
#define consoleOut std::cout
#endif
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR* fileExt;
TCHAR szDir[256];
GetFullPathName(argv[0], 256, szDir, &fileExt);
consoleOut << szDir << std::endl;
return 0;
}
结果。