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.


Anmelden zum Antworten