Fehler wx/datetime???



  • hallo erstmal,

    bin totaler anfänger in der gui-programmierung. ich lerne mit dem buch(c++ von jürgen wolf). bis jetzt hat alles prima geklappt, sehr verständlich aber nun stehe ich vor einem problem.

    ich arbeite mit vc++2008. das einbinden der wxwidgets war nicht das problem wenn ich das programm (HALLO WELT, bin ja noch anfänger) erstellen lassen möchte, bekomme ich ich folgende fehlermeldung:
    :\Programme\Microsoft Visual Studio 9.0\VC\include\wx/datetime.h(1098) : error C3861: "time": Bezeichner wurde nicht gefunden.

    irgendwie verstehe ich das noch nicht, da ich ja gar nix mit "wx/datetime" habe oder bin ich zu blöd?

    wenn ihr mir helfen könntet, wäre ich euch sehr dankbar. stehe voll auf`m schhlauch.

    hier mein code:

    // base.h
    #ifndef BASIC_H
    #define BASIC_H

    class HalloJackApp : public wxApp {
    public: virtual bool OnInit();
    };

    class BasicFrame : public wxFrame {
    public:
    BasicFrame( const wxChar *title,
    int xpos, int ypos,
    int width, int height);
    ~BasicFrame();
    };
    #endif

    ------------------------------------------------------------------------

    // base.cpp
    #include <wx/wx.h>
    #include "base.h"

    IMPLEMENT_APP(HalloJackApp)
    bool HalloJackApp::OnInit() {
    BasicFrame *frame =
    new BasicFrame( wxT("Hallo Jack"), 65, 65, 500, 350);
    frame->Show(TRUE);
    SetTopWindow(frame);
    return TRUE;
    }

    BasicFrame::BasicFrame (
    const wxChar *title,
    int xpos, int ypos,
    int width, int height)
    : wxFrame ( (wxFrame 😉 NULL,
    -1, title,
    wxPoint(xpos, ypos),
    wxSize(width, height)) { }

    BasicFrame::~BasicFrame() { }

    danke

    TOBI



  • Bitte code in [cpp_] /* hier dein code */ [/cpp_] packen. (ohne den Unterstrich) Aussdem formatieren/Einrücken.

    // base.h
    #ifndef BASIC_H
    #define BASIC_H
    
    class HalloJackApp : public wxApp {
    public: virtual bool OnInit();
    };
    
    class BasicFrame : public wxFrame {
    public:
        BasicFrame( const wxChar *title,
                    int xpos, int ypos,
                    int width, int height);
        ~BasicFrame();
    };
    #endif
    
    ------------------------------------------------------------------------
    
    // base.cpp
    #include <wx/wx.h>
    #include "base.h"
    
    IMPLEMENT_APP(HalloJackApp)
    bool HalloJackApp::OnInit() {
        BasicFrame *frame =
                new BasicFrame( wxT("Hallo Jack"), 65, 65, 500, 350);
        frame->Show(TRUE);
        SetTopWindow(frame);
        return TRUE;
    }
    
    BasicFrame::BasicFrame (
            const wxChar *title,
            int xpos, int ypos,
            int width, int height)
                : wxFrame ( (wxFrame *) NULL,
                            -1, title,
                            wxPoint(xpos, ypos),
                            wxSize(width, height)) { }
    
    BasicFrame::~BasicFrame() { }
    

    Das müsste imho noch mehr Fehler werfen, zB fehlt in deiner .h die #include <wxApp> (oder so ähnlich, ausserdem auch wxFrame ...) ? Kenn mich mit dem wxZeug aber nicht aus 🙂



  • Das müsste imho noch mehr Fehler werfen, zB fehlt in deiner .h die #include <wxApp> (oder so ähnlich, ausserdem auch wxFrame ...) ?

    Falsch, das ist in <wx/wx.h> schon drin.

    @TE
    Welche Version von wxWidgets? 2.9.1?
    Ansonsten ist der Fehler sehr ungewöhnlich.
    Mach mal ein #include <time.h> vor #include <wx/wx.h>.



  • padreigh schrieb:

    Bitte code in [cpp_] /* hier dein code */ [/cpp_] packen. (ohne den Unterstrich) Aussdem formatieren/Einrücken.

    Du kannst auch einfach [cpp][b][/b][/cpp] schreiben, dann kommt

    raus.

    In wx/wx.h wird anscheinend auch wx/datetime.h inkludiert. Ich kenne diesen Fehler nicht, nur einen Implementierungsfehler, der auf jeden Fall in 2.9.0 vorkam (Array mit völlig überhöhter Größe durch Verwendung eines falschen enum-Werts für die Größe). Außerdem solltest du in C++ <ctime> statt <time.h> inkludieren.



  • danke für eure antworten,

    leider hat keiner dieser vorschläge den erwünschten erfolg gebracht.
    wenn ich <time.h> vorher includiere, bekomme ich 13 syntaxs fehler.

    mfg
    tobi



  • neuling tobi schrieb:

    danke für eure antworten,

    leider hat keiner dieser vorschläge den erwünschten erfolg gebracht.
    wenn ich <time.h> vorher includiere, bekomme ich 13 syntaxs fehler.

    mfg
    tobi

    Welche?



  • Hier die Fehler bekomme ich wenn ich nur #include <time.h> als erstes inkludiere.

    C:\Programme\Microsoft Visual Studio 9.0\VC\include\time.h(29) : error C2143: Syntaxfehler: Es fehlt ';' vor '__cdecl'
    C:\Programme\Microsoft Visual Studio 9.0\VC\include\time.h(29) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    C:\Programme\Microsoft Visual Studio 9.0\VC\include\time.h(29) : error C2059: Syntaxfehler: ')'
    C:\Programme\Microsoft Visual Studio 9.0\VC\include\time.h(31) : error C2086: 'int time_t': Neudefinition
    C:\Programme\Microsoft Visual Studio 9.0\VC\include\time.h(36) : error C2143: Syntaxfehler: Es fehlt ',' vor '*'
    C:\Programme\Microsoft Visual Studio 9.0\VC\include\wchar.h(511) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'st_atime'
    C:\Programme\Microsoft Visual Studio 9.0\VC\include\wchar.h(512) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'st_mtime'
    C:\Programme\Microsoft Visual Studio 9.0\VC\include\wchar.h(513) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'st_ctime'
    C:\Programme\Microsoft Visual Studio 9.0\VC\include\wx/datetime.h(680) : error C2061: Syntaxfehler: Bezeichner 'time_t'
    C:\Programme\Microsoft Visual Studio 9.0\VC\include\wx/datetime.h(680) : error C2805: Binärer Operator '=' hat zu wenig Parameter
    C:\Programme\Microsoft Visual Studio 9.0\VC\include\wx/datetime.h(680) : error C2333: 'wxDateTime::operator =': Fehler in Funktionsdeklaration; Funktionstext wird übersprungen
    C:\Programme\Microsoft Visual Studio 9.0\VC\include\wx/datetime.h(862) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'GetTicks'



  • Das sieht ja verdächtig aus... Hast du eine Ahnung, ob deine time.h irgendwann mal vertauscht oder geändert worden sein könnte? Außerdem sieht der erste Fehler danach aus, dass die __cdecl-Funktionsdeklaration nicht mit dem Compiler funktioniert - sie ist AFAIK nicht standardisiert.

    Woher hast du denn dein wxWidgets? Welche Version?



  • Lad mal wxWidges komplett neu runter und lösche alles was du bisher hast.
    Runterladen von hier:
    http://prdownloads.sourceforge.net/wxwindows/wxWidgets-2.9.1.zip
    Danach entpacken an eine Stelle wo du es wiederfindest. Dann öffne
    wxWidgets-2.9.1\build\msw\wx_vc9.sln
    Dann einfach mal bauen, dynamisch oder statisch, wie gewünscht.
    Danach wie gehabt die Verzeichnisse setzen in den Optionen auf lib/<buildname> und include.
    Dann nochmal probieren.
    Du kannst auch mal versuchen ein Sample zu kompilieren.
    Ich vermute du hast das Paket von wxPack und da das falsche erwischt. Ich empfehle sowieso jedem das wxWidgets selbst zu bauen. Erspart viel Ärger und man erlernt den Umgang mit der IDE und auch der Konfiguration von wxWidgets (wenn man sich damit beschäftigt).



  • hi,
    hab mir wxwidgets neu runtergeladen( link), libs neu erstellt und es funktioniert

    danke


Anmelden zum Antworten