wx widgets mit dem msvs 2005 express builden



  • hallo leute,

    ich hab mir gerade die neueste version von wxwidgets runtergeladen und hier im FAQ mal nachgeschlagen wie man das mit dem MSVS 2005 express builden kann. der beitrag von phlox sagt, dass es für ms schon fertige projekte gibt, was auch halbwegs stimmt. hab da eins für Visual C++ 6 gefunden und das mal geöffnet (build/msw/wx.dsw). es wird dann in ein wx.sln konvertiert und mittels projektmappe erstellen hab ich dann auch alle gebaut (alle auf einen rutsch aber einzeln, wie ich vermute). wenn ich jetzt ein bsp. starten will kommt immer die meldung dass irgendwo ein setup.h fehlt. das hab ich dann woanders gefunden und in den gefordeten ordner kopiert (is glaub ich unwichtig welcher, denn das wird so warscheinlich nix) jetzt fehlts aber in lib/vc_lib/mswud/... wobei ich nur einen ordner mswd und keinen mswud habe. ich glaube das mit der konveritierung geht nicht so ohne weiteres und da hat sich irgendwo ein fehler eingeschlichen. wie muss ich es denn mit der express ed. richtig bauen bzw. kennt wer nen link wo das gut beschrieben ist?

    danke schonmal im voraus 😋



  • Hi,

    vergiss dein Problem. Es gibt etwas viel einfacheres 🙂 Nimm wxPack, und alles wird gut. Einfach installieren (incl. wxVC!), Visual Studio starten, neues wxWidgets Projekt anlegen, und loscoden 👍



  • is ja bloss 200 MB größer ... 😮
    aber danke trotzdem, habs mir mal runtergeladen, gibt da nur noch ein problem (eigentlich eher 440 wenn mans genau nimmt :D), nämlich beim linken fehlen ihm 440 referenzen. ich hab dem vc zum einen den include ordner und und dann noch den lib ordner angegebn, das reicht wohl noch nicht... was fehlt da noch (eingebunden hab ich jetzt mal nur wx/wx.h)?



  • Sag mal, kannst du überhaupt wxWidgets? Dann müsstest du wissen, dass das ledigliche Inkludieren von wx/wx.h nicht ausreicht. Je nach verwendeten Klassen musst du auch die entsprechenden Header einbinden. Und zu den Linkeroptionen musst du nichts zusätzliches einfügen, das hat bereits alles wxPack gemacht! Hast du aber schon ein wxWidgets Projekt erstellt? Wenn ja, dann müsste es sich problemlos kompilieren lassen, und als Ergebnis kommt ein schönes Fenster.



  • Ob du 200 MB runter lädts oder ob die erst noch auf deiner Platte erzeugt werden, ist ja egal.

    Zeig doch mal ein oder zwei Fehlermeldungen. Fehlende Referenz schliesst eher darauf, das du vergessen hast die nötigen wxWidgets LIBs deinem Projekt hinzu zufügen. Ich habe wxPack nie ausprobiert, aber ich vermute mal, das alles wichtige in der entsprechende Doku oder readme drin steht.



  • ja ok 😋



  • naja toll, der letzte eintrag war von nem andern spaßvogel und nicht von mir...
    jedenfalls ist das bsp. das ich hab ähnlich dem, auf der wx site (hello world). hier hab ich mal den code und ich dachte eigentlich wx als header würde genügen:

    //base.h
    #ifndef BASIC_H
    #define BASIC_H
    #include <wx/wx.h>
    
    class HalloWeltApp : 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 "base.h"
    #include <wx/wx.h>
    
    IMPLEMENT_APP (HalloWeltApp)
    
    bool HalloWeltApp::OnInit()
    {
    	BasicFrame* frame = new BasicFrame(wxT("Hallo Welt"), 50, 50, 450, 300);
    	frame->Show(true);
    	SetTopWindow(frame);
    	return true;
    }
    
    BasicFrame::BasicFrame(const wxChar* title, int xpos, int ypos, int width, int height)
    : wxFrame(0, -1, title, wxPoint(xpos, ypos), wxSize(width, height) /* , style=wxDEFAULT_FRAME_STYLE | wxSTAY_ON_TOP */) {};
    
    BasicFrame::~BasicFrame() {};
    


  • Und? Was sollen wir jetzt damit anfangen? 🙄 Wie wäre es mal mit Fehlermeldungen? Poste doch mal ein paar (nicht alle, wenn es viele sind). Und was man beachten muß, habe ich auch schon gesagt. Haste das auch beachtet?



  • Artchi schrieb:

    Und? Was sollen wir jetzt damit anfangen?

    naja das ist der quellcode. ich dachte, dass vielleicht jemand nen fehler dort entdeckt.

    Artchi schrieb:

    Und was man beachten muß, habe ich auch schon gesagt. Haste das auch beachtet?

    jo hab ich, du hast das hier gesagt 😉

    Artchi schrieb:

    Ob du 200 MB runter lädts oder ob die erst noch auf deiner Platte erzeugt werden, ist ja egal.

    Zeig doch mal ein oder zwei Fehlermeldungen. Fehlende Referenz schliesst eher darauf, das du vergessen hast die nötigen wxWidgets LIBs deinem Projekt hinzu zufügen. Ich habe wxPack nie ausprobiert, aber ich vermute mal, das alles wichtige in der entsprechende Doku oder readme drin steht.

    mikey schrieb:

    Und zu den Linkeroptionen musst du nichts zusätzliches einfügen, das hat bereits alles wxPack gemacht!

    also eine fehlende lib können wir dann schonmal ausschließen.

    Artchi schrieb:

    Wie wäre es mal mit Fehlermeldungen? Poste doch mal ein paar (nicht alle, wenn es viele sind)

    ohja es sind viele! 440 (!) errors und 3 warnugen, hier mal ein paar wobei ich nicht glaube dasses viel bringt.

    1>base.obj : warning LNK4248: Nicht aufgelöstes Typeref-Token (01000017) für "wxVideoMode". Das Abbild kann möglicherweise nicht ausgeführt werden.
    1>base.obj : warning LNK4248: Nicht aufgelöstes Typeref-Token (01000018) für "wxToolTip". Das Abbild kann möglicherweise nicht ausgeführt werden.
    1>base.obj : warning LNK4248: Nicht aufgelöstes Typeref-Token (01000019) für "wxDropTarget". Das Abbild kann möglicherweise nicht ausgeführt werden.
    1>base.obj : error LNK2020: Nicht aufgelöstes Token (0A000BDB) "public: static unsigned int const wxStringBase::npos" (?npos@wxStringBase@@2IB).
    1>base.obj : error LNK2028: Nicht aufgelöstes Token (0A000BF4) ""public: class wxIconBundle const & __thiscall wxIconBundle::operator=(class wxIconBundle const &)" (??4wxIconBundle@@$$FQAEABV0@ABV0@@Z)", auf das in Funktion ""public: __thiscall wxIconBundle::wxIconBundle(class wxIconBundle const &)" (??0wxIconBundle@@$$FQAE@ABV0@@Z)" verwiesen wird.
    1>base.obj : error LNK2028: Nicht aufgelöstes Token (0A000BFB) ""public: virtual __thiscall wxPen::~wxPen(void)" (??1wxPen@@$$FUAE@XZ)", auf das in Funktion ""public: virtual void * __thiscall wxPen::`vector deleting destructor'(unsigned int)" (??_EwxPen@@$$FUAEPAXI@Z)" verwiesen wird.
    1>base.obj : error LNK2028: Nicht aufgelöstes Token (0A000C61) ""protected: static unsigned long __cdecl _wxHashTableBase2::GetNextPrime(unsigned long)" (?GetNextPrime@_wxHashTableBase2@@$$FKAKK@Z)", auf das in Funktion ""protected: void __thiscall wxLongToLongHashMap_wxImplementation_HashTable::ResizeTable(unsigned int)" (?ResizeTable@wxLongToLongHashMap_wxImplementation_HashTable@@$$FIAEXI@Z)" verwiesen wird.
    1>base.obj : error LNK2028: Nicht aufgelöstes Token (0A000C63) ""protected: static void __cdecl _wxHashTableBase2::CopyHashTable(struct _wxHashTable_NodeBase * *,unsigned int,class _wxHashTableBase2 *,struct _wxHashTable_NodeBase * *,unsigned long (__cdecl*)(class _wxHashTableBase2 *,struct _wxHashTable_NodeBase *),struct _wxHashTable_NodeBase * (__cdecl*)(struct _wxHashTable_NodeBase *))" (?CopyHashTable@_wxHashTableBase2@@$$FKAXPAPAU_wxHashTable_NodeBase@@IPAV1@0P6AK1PAU2@@ZP6APAU2@2@Z@Z)", auf das in Funktion ""protected: void __thiscall wxLongToLongHashMap_wxImplementation_HashTable::ResizeTable(unsigned int)" (?ResizeTable@wxLongToLongHashMap_wxImplementation_HashTable@@$$FIAEXI@Z)" verwiesen wird.
    1>base.obj : error LNK2020: Nicht aufgelöstes Token (0A000CDA) "int g_isPainting" (?g_isPainting@@3HA).
    1>base.obj : error LNK2028: Nicht aufgelöstes Token (0A000CDC) ""void __cdecl wxOnAssert(wchar_t const *,int,char const *,wchar_t const *,wchar_t const *)" (?wxOnAssert@@$$FYAXPB_WHPBD00@Z)", auf das in Funktion ""protected: void const * __thiscall wxVectorBase::GetItem(unsigned int)const " (?GetItem@wxVectorBase@@$$FIBEPBXI@Z)" verwiesen wird.
    1>base.obj : error LNK2028: Nicht aufgelöstes Token (0A000D46) ""private: void __thiscall wxStringList::DoCopy(class wxStringList const &)" (?DoCopy@wxStringList@@$$FAAEXABV1@@Z)", auf das in Funktion ""public: __thiscall wxStringList::wxStringList(class wxStringList const &)" (??0wxStringList@@$$FQAE@ABV0@@Z)" verwiesen wird.
    1>base.obj : error LNK2020: Nicht aufgelöstes Token (0A000D67) "wchar_t const * const wxFrameNameStr" (?wxFrameNameStr@@3QB_WB).
    1>base.obj : error LNK2028: Nicht aufgelöstes Token (0A000DD6) ""public: virtual __thiscall wxCursor::~wxCursor(void)" (??1wxCursor@@$$FUAE@XZ)", auf das in Funktion ""public: virtual void * __thiscall wxCursor::`vector deleting destructor'(unsigned int)" (??_EwxCursor@@$$FUAEPAXI@Z)" verwiesen wird.
    1>base.obj : error LNK2028: Nicht aufgelöstes Token (0A000DFB) ""class wxWindow * __cdecl wxGetTopLevelParent(class wxWindow *)" (?wxGetTopLevelParent@@$$FYAPAVwxWindow@@PAV1@@Z)", auf das in Funktion ""public: virtual bool __thiscall wxTopLevelWindowBase::IsActive(void)" (?IsActive@wxTopLevelWindowBase@@$$FUAE_NXZ)" verwiesen wird.
    1>base.obj : error LNK2028: Nicht aufgelöstes Token (0A000E4C) ""public: virtual __thiscall wxFontBase::~wxFontBase(void)" (??1wxFontBase@@$$FUAE@XZ)", auf das in Funktion ""public: virtual void * __thiscall wxFontBase::`vector deleting destructor'(unsigned int)" (??_EwxFontBase@@$$FUAEPAXI@Z)" verwiesen wird.
    1>base.obj : error LNK2028: Nicht aufgelöstes Token (0A000EAB) ""public: __thiscall wxBaseArrayPtrVoid::wxBaseArrayPtrVoid(void)" (??0wxBaseArrayPtrVoid@@$$FQAE@XZ)", auf das in Funktion ""public: __thiscall wxArrayPtrVoid::wxArrayPtrVoid(void)" (??0wxArrayPtrVoid@@$$FQAE@XZ)" verwiesen wird.
    1>base.obj : error LNK2028: Nicht aufgelöstes Token (0A000EAD) ""public: __thiscall wxBaseArrayPtrVoid::~wxBaseArrayPtrVoid(void)" (??1wxBaseArrayPtrVoid@@$$FQAE@XZ)", auf das in Funktion ""public: __thiscall wxArrayPtrVoid::~wxArrayPtrVoid(void)" (??1wxArrayPtrVoid@@$$FQAE@XZ)" verwiesen wird.
    

    @mikey: bist du dir da sicher, dass ich nix mehr hinzulinken muss?



  • Ja, ich habe das Beispiel doch auch kompilieren können mit VS. Erstell in VS einfach ein neues wxWidgets Projekt, da ist der Standardcode schon eingefügt. Kompilieren müsste klappen.



  • @ mikey: ja vielen dank, jetzt gehts. ich hatte den code nur noch im alten konsolenprojekt stehn, wusste gar nicht, dass wx nen eigenen projekttyp mitbringt.


Anmelden zum Antworten