想要获取DLL路径,但是返回值szBuffer是TCHAR*类型的,如何返回wchar_t*类型的字符串?wchar_t* __stdcall cGetModulePath(){HMODULE hMod = GetModuleHandle(_T("mydll.dll"));TCHAR szBuffer[MAX_PATH] = { 0 };if (hMod != NULL){GetModuleFileName(hMod, szBuffer, sizeof(szBuffer) / sizeof(TCHAR) - 1);OutputDebugString(szBuffer);}return (szBuffer); //需要在这里把szBuffer转为wchar_t*类型并返回}
1 回答
千巷猫影
TA贡献1829条经验 获得超7个赞
1、TCHAR 是宽字节的,string没有具体的说明的话应该是窄字节的,类型会不匹配的。
宽字节转多字节 :WideCharToMultiByte //其实这里的多字节就是char
多字节转宽字节 :MultiByteToWideChar //多字节也就是ASCII单字节
2、TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码。
TCHAR的引入,主要是在Tchar.h文件中,该文件包含这方面的重要的定义信息。
对于包含了对str函数或wcs函数进行显式调用的代码来说,无法非常容易地同时为ANSI和Unicode对这些代码进行编译。本章前面说过,可以创建同时为ANSI和Unicode进行编译的单个源代码文件。若要建立双重功能,必须包含TChar.h文件,而不是包含String.h文件。
TChar.h文件的唯一作用是帮助创建ANSI/Unicode通用源代码文件。它包含应该用在源代码中的一组宏,而不应该直接调用str函数或者wcs函数。如果在编译源代码文件时定义了_UNICODE,这些宏就会引用wcs这组函数。如果没有定义_UNICODE,那么这些宏将引用str这组宏。
- 1 回答
- 0 关注
- 179 浏览
添加回答
举报
0/150
提交
取消