Compilerfehler bei VS2008express, nicht jedoch bei VS2003
-
Hi Leuts,
ich habe folgende Codezeilen:BOOL CSerial::OpenPort(DCB dcb, const char* portName) { COMMTIMEOUTS comTimeOut; if (statusPort_ == false) // if port is already open { // IF oeffnen handlePort_ = CreateFile(portName,
Beim VS 2003 läuft das Ganze ohne Fehlermeldung durch.
VS2008 Express meckert aber portName an:error C2664: 'CreateFileW': Konvertierung des Parameters 1 von 'const char *' in 'LPCWSTR' nicht möglich
Kann das irgendein Unicode Problem sein (nur so ein Bauchgefühl von mir) ?
Greets
Karlheinz
-
Ja, er erwartet einen
wchar_t*
. Das erkennst du auch am W in 'CreateFileW'. Der MSVC2005+ arbeitet standardmäßig mit der Präprozessor-Direktive UNICOCDE bzw. _UNICODE, so das alle Win32API-Aufrufe ein W anstatt ein A haben. Wenn du deine Funktionen nicht auf wchar_t umstellen willst, rufe einfach explizit die ASCII-Variante auf, also CreateFileA.Oder du nimmst in den Projekteinstellungen das Unicode wieder raus, wenn du mit Unicode nichts zu tun haben willst. Was ich aber pers. nicht so favorisieren würde.
-
Jetzt läufts.