falsche konfigurierung??



  • hy @ all!!

    ich habe ein kleines problem, denn ich habe winapi auf mein vs2005 konfiguriert, wie es beschrieben wird, doch es funkt nicht!!!

    Fehlermeldung:

    1>------ Erstellen gestartet: Projekt: Winapi, Konfiguration: Release Win32 ------
    1>Kompilieren...
    1>Winapi.cpp
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(222) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'PVOID64'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(222) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(2857) : warning C4312: 'Typumwandlung': Konvertierung von 'ULONG_PTR' in größeren Typ 'PVOID *'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(2858) : warning C4312: 'Typumwandlung': Konvertierung von 'ULONG_PTR' in größeren Typ 'PVOID'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(5940) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'Buffer'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(5940) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(5940) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(9594) : warning C4312: 'Typumwandlung': Konvertierung von 'ULONG_PTR' in größeren Typ '_TEB *'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winbase.h(1775) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'PVOID' zu 'LONG_PTR'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winbase.h(1775) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'PVOID' zu 'LONG_PTR'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winbase.h(1775) : warning C4312: 'Typumwandlung': Konvertierung von 'LONG_PTR' in größeren Typ 'PVOID'
    1>.\Winapi.cpp(9) : error C2731: 'WinMain': Überladen der Funktion nicht möglich
    1>        .\Winapi.cpp(8): Siehe Deklaration von 'WinMain'
    1>.\Winapi.cpp(10) : error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [6]' in 'LPCWSTR' nicht möglich
    1>        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    1>Das Buildprotokoll wurde unter "file://d:\Files\My Files\Visual Studio 2005\Projects\Winapi\Winapi\Release\BuildLog.htm" gespeichert.
    1>Winapi - 7 Fehler, 6 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    Source Code:

    #include "stdafx.h"
    #include <windows.h>
    
    int WINAPI WinMain(HINSTANCE hI, HINSTANCE, TCHAR*, int) 
    { 
     MessageBox(NULL, "Hallo", "", MB_OK); 
     WAIT;
     return 0; 
    }
    




  • Falsche Programmiertechnik.
    Du gibst WinMain einige Parametertypen an, aber nicht, welche Parameter es sein sollen. Die werden nämlich von Windows bestimmt.
    Der Funktionsheader von WinMain sollte so aussehen:

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
            PSTR szCmdLine, int iCmdShow)
    


  • danke für die schnellen Antworten, doch sie helfen mir nicht weiter es gibt noch imma fehlermeldungen, hab psdk aber installiert und mit der anleitung konfiguriert!!



  • Dann zeig uns doch das Prog und die Meldungen- sind bestimmt nicht mehr die selben wie zu Beginn.



  • hy

    Fehlermeldungen:

    1>------ Erstellen gestartet: Projekt: Winapi, Konfiguration: Release Win32 ------
    1>Kompilieren...
    1>Winapi.cpp
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(222) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'PVOID64'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(222) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(2857) : warning C4312: 'Typumwandlung': Konvertierung von 'ULONG_PTR' in größeren Typ 'PVOID *'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(2858) : warning C4312: 'Typumwandlung': Konvertierung von 'ULONG_PTR' in größeren Typ 'PVOID'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(5940) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'Buffer'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(5940) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(5940) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winnt.h(9594) : warning C4312: 'Typumwandlung': Konvertierung von 'ULONG_PTR' in größeren Typ '_TEB *'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winbase.h(1775) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'PVOID' zu 'LONG_PTR'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winbase.h(1775) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'PVOID' zu 'LONG_PTR'
    1>C:\Programme\Microsoft Visual Studio 8\VC\include\winbase.h(1775) : warning C4312: 'Typumwandlung': Konvertierung von 'LONG_PTR' in größeren Typ 'PVOID'
    1>.\Winapi.cpp(11) : error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [6]' in 'LPCWSTR' nicht möglich
    1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    1>Das Buildprotokoll wurde unter "file://d:\Files\My Files\Visual Studio 2005\Projects\Winapi\Winapi\Release\BuildLog.htm" gespeichert.
    1>Winapi - 6 Fehler, 6 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    #include "stdafx.h"
    #include <windows.h>
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    				   PSTR szCmdLine, int iCmdShow)
    { 
     MessageBox(NULL, "Hallo", "", MB_OK); 
     WAIT;
     return 0; 
    }
    


  • Ich meine in einer der Fehlermeldungen gesehen zu haben, dass eine String-Conversion von const char* zu LPCWSTR nicht möglich ist, d.h. dein Projekt ist auf UNICODE eingestellt.

    Schreib vor die Stringliterale mal ein L, bzw. ein _() oder _T() drum also

    MessageBox(NULL, L"Hallo", L"", MB_OK);
    // oder
    MessageBox(NULL, _T("Hallo"), _T(""), MB_OK);
    // oder
    MessageBox(NULL, _("Hallo"), _("Hallo"), MB_OK);
    

    oder aber, und das wird wohl für die nahe Zukunft einfacher sein: Stelle in deinen Einstellungen von UNICODE zu MBCS.


Log in to reply