compiler fehler bei __declspec(dllexport)



  • hallo,

    ich bekomme einen rätselhaften compiler fehler

    1>------ Erstellen gestartet: Projekt: mnml, Konfiguration: Debug Win32 ------
    1> mnml_app.cpp
    1>e:\ec works\ecworks_mep\mnml\mnml_app.cpp(34): warning C4996: 'wxDialog::wxDialog': wurde als veraltet deklariert
    1> f:\wxwidgets-2.8.11\include\wx\msw\dialog.h(105): Siehe Deklaration von 'wxDialog::wxDialog'
    1>e:\ec works\ecworks_mep\mnml\mnml_app.cpp(21): fatal error C1001: Interner Compilerfehler.
    1> (Compilerdatei "f:\dd\vctools\compiler\utc\src\p2\main.c[0x50F3077A:0x00000008]", Zeile 183)
    1> Vereinfachen oder ändern Sie das Programm im Umfeld der oben aufgeführten Positionen. Wählen
    1> Sie im Menü "Hilfe" von Visual C++ den Befehl "Technischer Support",
    1> oder öffnen Sie die Hilfedatei des technischen Supports, um weitere Informationen zu erhalten.
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    bei folgendem code:

    #ifndef __mnml_app_h__
    #define __mnml_app_h__
    
    #define DLL_EXPORT
    
    #ifndef DLL_EXPORT
    #define DECLDIR __declspec(dllimport)
    #else
    #define DECLDIR __declspec(dllexport)
    #endif
    
    namespace mnml {
    
    class DECLDIR MyDialog : public wxDialog {
    public:
    	MyDialog(wxWindow *par);
    	~MyDialog(){}
    
    	void onChanged(wxCommandEvent &evt);
    	void targetFunc(int num);
    };
    
    class MyFrame1 : public wxFrame 
    {
    public:
    	MyFrame1( wxWindow* parent = NULL, 
    		wxWindowID id = wxID_ANY, 
    		const wxString& title = wxEmptyString, 
    		const wxPoint& pos = wxDefaultPosition, 
    		const wxSize& size = wxSize( 500,300 ), 
    		long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
    	~MyFrame1();
    
    };
    
    }
    #endif
    
    #include "mnml_app.h"
    #include <wx/spinctrl.h>
    
    mnml::MyFrame1::MyFrame1( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
    {
    	this->SetSizeHints( wxDefaultSize, wxDefaultSize );
    	MyDialog dlg = MyDialog(this);
    	if(dlg.ShowModal() == wxID_OK){
    
    	}
    
    	this->Centre( wxBOTH );
    }
    
    mnml::MyFrame1::~MyFrame1()
    {
    }
    
    mnml::MyDialog::MyDialog(wxWindow *par) : wxDialog(par, _("mnml dialog"), true)
    {
    	wxSpinCtrl *spin = new wxSpinCtrl(this);
    	Connect(spin->GetId(), wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler(MyDialog::onChanged));
    }
    
    void mnml::MyDialog::targetFunc( int num )
    {
    	int number = num;
    }
    
    void mnml::MyDialog::onChanged( wxCommandEvent &evt )
    {
    	targetFunc(evt.GetInt());
    }
    

    der fehler kommt nur dann, wenn ich DECLDIR vor MyDialog lasse, nach dem wegnehmen kompiliert alles ok.
    hat jemand eine idee, wie ich das loswerden könnte?
    danke!

    ps: der "sinn" des codes soll nur darin bestehen, dass ich lernen kann, wie der call stack beim aufrufen der funktion targetFunc aussieht. ich will in ida pro free einen breakpoint setzen und mir dann alles anschauen.


Log in to reply