Error C2664 Cannot Convert From Const Char To Lpcwstr
Contents |
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about cannot convert parameter from const char to lpcwstr Stack Overflow the company Business Learn more about hiring developers or posting ads with
Cannot Convert Parameter 1 From Const Char * To Lpcwstr
us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is cannot convert from const char to lpctstr a community of 4.7 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up cannot convert parameter 1 from 'char' to 'LPCWSTR' up vote 21 down vote favorite how to convert const char to lpctstr in c++ 10 I keep getting this error: 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"); can someone help? c++ windows createfile lpcwstr share|improve this question edited Jun 8 '15 at 22:40 Joseph Stine 9551921 asked Oct 13 '10 at 14:45 sebastian 53361433 add a comment| 5 Answers 5
Cannot Convert From 'const Char [14]' To 'lpcwstr'
active oldest votes up vote 7 down vote accepted It should be int main(int argc, char* argv[]) And HANDLE h = CreateFileA(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); share|improve this answer answered Oct 13 '10 at 14:51 ybungalobill 37.6k1074136 1 I don't thing using the ANSI version of CreateFile is the right way to go, next thing you know and he'll start changing all the function calls to use the ANSI version. –Nikola Smiljanić Oct 13 '10 at 15:00 1 @Nikola: Of course it's the wrong way! I just think that it's not appropriate to explain the difference between char, wchat_t, TCHAR and how to write correct unicode applications to an absolute beginner. –ybungalobill Oct 13 '10 at 15:04 add a comment| up vote 85 down vote Go to the Properties for your Project and under Configuration Properties/General, change the Character Set to "Not Set". This way, the compiler will not assume that you want Unicode characters, which are selected by default: share|improve this answer answered Oct 13 '10 at 14:58 Michael Goldshteyn 37.4k1381139 add a comment| up vote 4 down vote This is the main function that Visual Studio creates by default: int _tmain(int argc, _TCHAR* argv[]) Where _TCHAR is defined to be char or wchar_t depending if _UNICODE is
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow the company Business Learn more about hiring developers or const wchar_t *' to 'lpcstr' posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss const char is incompatible with lpcwstr Join the Stack Overflow Community Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. Join them; it only takes
Cannot Convert Argument 1 From 'char *' To 'lpcwstr'
a minute: Sign up cannot convert parameter 1 from 'const char *' to 'LPCWSTR' up vote 3 down vote favorite 1 Basically I have some simple code that does some things for files and I'm trying to port it to http://stackoverflow.com/questions/3924926/cannot-convert-parameter-1-from-char-to-lpcwstr windows. I have something that looks like this: int SomeFileCall(const char * filename){ #ifndef __unix__ SomeWindowsFileCall(filename); #endif #ifdef __unix__ /**** Some unix only stat code here! ****/ #endif } the line SomeWindowsFileCall(filename); causes the compiler error: cannot convert parameter 1 from 'const char *' to 'LPCWSTR' How do I fix this, without changing the SomeFileCall prototype? c winapi cross-platform share|improve this question asked May 23 '12 at 20:45 john-charles 5852821 LPCWSTR is const wchar_t * - which is a wide http://stackoverflow.com/questions/10727568/cannot-convert-parameter-1-from-const-char-to-lpcwstr character string. –Mysticial May 23 '12 at 20:48 See Working with Strings for more details. –Adam Rosenfield May 23 '12 at 20:50 possible duplicate of cannot convert parameter 1 from 'char *' to 'LPCWSTR' –outis Jul 9 '12 at 19:42 add a comment| 4 Answers 4 active oldest votes up vote 8 down vote accepted Most of the Windows APIs that take strings have two versions: one that takes char * and one that takes WCHAR * (that latter is equivalent to wchar_t *). SetWindowText, for example, is actually a macro that expands to either SetWindowTextA (which takes char *) or SetWindowTextW (which takes WCHAR *). In your project, it sounds like all of these macros are referencing the -W versions. This is controlled by the UNICODE preprocessor macro (which is defined if you choose the "Use Unicode Character Set" project option in Visual Studio). (Some of Microsoft's C and C++ run time library functions also have ANSI and wide versions. Which one you get is selected by the similarly-named _UNICODE macro that is also defined by that Visual Studio project setting.) Typically, both of the -A and -W functions exist in the libraries and are available, even if your application is compiled for Unicode. (There are exceptions; some newer functions are available only in "wide" versions.) If you have a char * that contains text in the proper ANSI code page, you can call the -A version