此问题是 C++ 问题和 Windows 特定问题的组合。
C++ 定义了两种类型的字符串,常规的和宽的。常规字符串如下所示:
const char *str = "regular string";
而宽字符串看起来像:
const wchar_t *wstr = L"wide string";
仅使用标准 C++,您必须在编写库时决定是使用常规字符串还是宽字符串。
Windows 定义了一个名为 tchar 的伪类型。使用 tchar,您可以编写如下内容:
LPCTSTR tstr = _T("regular or wide string");
这实际上是常规 (char *) 还是宽 (wchar_t *) 字符串取决于您是否为 Unicode 编译代码。
由于该函数被指定为采用 LPCTSTR,因此需要使用适合您编译方式的适当类型来调用它。
如果您知道自己只会在有或没有 Unicode 支持的情况下进行构建,则可以跳过所有 TCHAR 内容并分别直接使用 wchar_t 或 char。
由于CFileImageLoader("Splash02.png") 不起作用,您必须在启用Unicode 支持的情况下进行编译。您可以将其更改为 CFileImageLoader(L"Splash02.png") 并承诺始终使用 Unicode,或者您可以将其更改为 CFileImageLoader(_T("Splash02.png")) 并让宏魔法来完成工作。