相关疑难解决方法(0)

如何在VC++项目中关闭Unicode?

我在Visual Studio 2008中有一个VC++项目.

它在编译器命令行(/D "_UNICODE" /D "UNICODE")上定义unicode的符号,即使我没有在项目的预处理器部分中打开此符号.

替代文字http://i26.tinypic.com/14nz693.jpg

因此,我正在编译所有Win32库函数的Unicode版本,而不是ANSI版本.例如在WinBase.h中,有:

#ifdef UNICODE
#define CreateFile  CreateFileW
#else
#define CreateFile  CreateFileA
#endif // !UNICODE
Run Code Online (Sandbox Code Playgroud)

在VC++项目中打开unicode的位置,我该如何将其关闭?

unicode visual-studio visual-c++

60
推荐指数
5
解决办法
10万
查看次数

无法将参数1从'char'转换为'LPCWSTR'

我一直收到这个错误: cannot convert parameter 1 from 'char' to 'LPCWSTR'

int main(int argc, char argv[])    
{

   // open port for I/O
   HANDLE h = CreateFile(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

   if(h == INVALID_HANDLE_VALUE) {
       PrintError("E012_Failed to open port");
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

c++ windows createfile lpcwstr

28
推荐指数
3
解决办法
9万
查看次数

如何将char*转换为LPCWSTR?

我知道在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)

c++ visual-c++ visual-studio-2012

10
推荐指数
2
解决办法
7万
查看次数

将char []转换为LPCWSTR

任何人都可以帮我纠正这段代码:

    char szBuff[64];
    sprintf(szBuff, "%p", m_hWnd);
    MessageBox(NULL, szBuff, L"Test print handler", MB_OK);
Run Code Online (Sandbox Code Playgroud)

错误是,它无法将第二个参数转换为LPCWSTR.

visual-c++

9
推荐指数
1
解决办法
6万
查看次数