Jump to content

wxWidgets: IMPLEMENT_APP richtig anwenden (oder umgehen)

Empfohlene Beiträge

Hallo,

ich habe (immer noch) das Problem, dass ich es einfach nicht fertig bringe, eine wxApp aus einer statischen Bibliothek im Hauptprogramm zu implementieren. Dabei entstanden stets Memoryleaks, wobei ich nicht weiß, ob das tatsächlich die Ursache dafür ist, dass die ganze App nicht läuft.

Durch Auskommentieren habe ich festgestellt, dass es nicht an einer Anweisung innerhalb des App-Quellcodes scheitert, sondern schon beim implementieren, also durch die Anweisung "IMPLEMENT_APP".

Da nicht mehr viel Code übrig geblieben ist, zitiere ich den hier jetzt komplett:

Zum einen das Hauptprogramm "Controller.exe"

Controller.h


#include <ViewDeclaration.h>


#include <stdlib.h>

#include <crtdbg.h>


#ifndef _CONTROLLER_H_

#define _CONTROLLER_H_


using namespace ModelClasses;


class Controller

{


public:

	Controller() throw(...);

	~Controller();

};


#endif

Controller.cpp

#include "Controller.h"


#include <iostream>


using namespace std;


IMPLEMENT_APP(View);


Controller::Controller()

{


}


Controller::~Controller()

{


}


void main()

{

	Controller();

}

Zum anderen die View als Bibliothek "View.lib" ViewDecalaration.h

#include <wx\wx.h>


#ifdef __WXMSW__

#include <wx/msw/msvcrt.h>

#endif


#ifndef _VIEWDECLARATION_H_

#define _VIEWDECLARATION_H_


using namespace std;


class View : public wxApp

{

public:

	View();

	~View();

};


#endif

View.cpp

#include <ViewDeclaration.h>


View::View()

{


}


View::~View()

{


}

Es soll also eigentlich bei der Version noch überhaupt nichts passieren - trotzdem schon Memoryleaks. Es muss also, schätze ich, an der "IMPLEMENT_APP"-Anweisung liegen, respektive am Programmaufbau, da es funktioniert hat, als ich alles innerhalb eines Programmes ohne Bibliotheken getestet habe. Wie bekomme ich es jetzt hin, dass das auch als Bibliothek funktioniert? Eignet sich das Makro überhaupt für einen Aufruf an dieser Stelle? Welche Alternativen gibt es? Ich habe schon gesucht und bin dabei auf solches gestoßen:

wxApp::SetInstance( new MyWxApp() );

wxEntryStart( argc, argv );

wxTheApp->OnInit();


// you can create top level-windows here or in OnInit()

...

// do your testing here


wxTheApp->OnRun();

wxTheApp->OnExit();

wxEntryCleanup();

Das habe ich schon versucht, hat den gleichen Effekt.

Bitte helft mir.

Gruß

PL1994

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung