1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

DLL erstellen

Discussion in 'Programmieren' started by dangala, Mar 17, 2007.

Thread Status:
Not open for further replies.
  1. dangala

    dangala ROM

    Hallo,

    ich schreibe eine C++ dll und möchte Methoden exportieren:

    Code:
    #pragma once 
    #include "eDirect3D.h" 
    #include "eCamera.h" 
    #include "eInputManager.h" 
    
    namespace Engine 
    { 
        class  eEngine 
        { 
        public: 
            __declspec(dllexport)eEngine(){}; 
            __declspec(dllexport)~eEngine(){}; 
            __declspec(dllexport) bool Start(HWND hWnd,HINSTANCE hInstance,bool bWindowed); 
            __declspec(dllexport) bool PreRun(); 
            __declspec(dllexport) bool Run(); 
            __declspec(dllexport) bool PostRun(); 
    
    
        private: 
            eDirect3D            m_Direct3D; 
            eInputManager        m_Input; 
            eCamera              m_Cam; 
            POINT                m_MousePos; 
    
        }; 
    }  
    bekomme Fehler Meldung
    LINK : error LNK2020: Nicht aufgelöstes Token (0A00001E) eInputManager.__dtor
    LINK : error LNK2020: Nicht aufgelöstes Token (0A000020) eDirect3D.__dtor
    LINK : fatal error LNK1120: 2 unaufgelöste externe Verweise


    Die Membervarialblen, die ich als private deklariert habe kann ich nicht freigeben.

    ich schreibe zum ersten Mal eine DLL und kenn' mich nicht aus. Ich hoffe Ihr könnt mir weiter helfen.
     
  2. dangala

    dangala ROM

    Keine Antwort...?:heul:

    okay, dann möchte ich nur wissen, wie man in C++ eine DLL erstellt. Ich möchte nur wissen, wie man die Klassen oder Methoden importieren/exportieren kann...
     
  3. Hallo,

    soweit mir bekannt, lässt sich eine Klasse nicht exportieren, da sie dyn. instanziiert wird! Jedenfallls ist es mir auch nicht gelungen.

    Bei dem genannten Problem bin ich immer wie folgt vorgegangen:
    1) Eine globale! Funktion z.B. InitEngine, die die Klasse per new erzeugt und einen Pointer auf die Klasse zurückgibt.
    Code:
    __declspec(dllexport) void *InitEngine(void) { 
        return new Engine:eEngine;
    }
    
    2) Globale Funktionen, die den Pointer als Parameter entgegennehmen und auf die Methoden bzw. Eigenschaften der Klasse zugreifen.
    3) wie 1) nur CloseEngine und per delete die Klasse zerstören.
     
Thread Status:
Not open for further replies.

Share This Page