我知道在SO的几个问题中已经讨论过这个问题,但这些解决方案都没有对我有用.
我从a开始,char*因为这是一个将从VBA调用的DLL,并且char*是VBA将字符串传递给DLL所必需的.
我需要返回一个LPCWSTR因为这是我试图调用的API函数的输入参数,并且我无法通过在"属性"窗口中从Unicode切换到多字节字符集来启用强制转换,因为API具有以下代码:
#if !defined(UNICODE) && !defined(NOUNICODE)
#error UNICODE is not defined. UNICODE must be defined for correct API arguments.
#endif
Run Code Online (Sandbox Code Playgroud)
我试过这个:
LPCWSTR convertCharArrayToLPCWSTR(char* charArray)
{
const char* cs=charArray;
wchar_t filename[4096] = {0};
MultiByteToWideChar(0, 0, cs[1], strlen(cs[1]), filename, strlen(cs[1]));
}
Run Code Online (Sandbox Code Playgroud)
出现这些错误:
error C2664: 'strlen' : cannot convert parameter 1 from 'const char' to 'const char *'
error C2664: 'MultiByteToWideChar' : cannot convert parameter 3 from 'const char' to 'LPCCH'
Run Code Online (Sandbox Code Playgroud)
我试过这个(相同的函数头),从这篇文章中松散地改编:
size_t retVal; …Run Code Online (Sandbox Code Playgroud)