DLL-Dateien mit DEV-C++



  • Hallo,

    ich beschäftige mich gerade damit wie ich meinen Code als DLL Dateikompilieren kann.
    Ich nutze, wie im Titel beschrieben, DEV-C++.

    Hier mein Source (C++)

    dll.h:

    #ifndef _DLL_H_
    #define _DLL_H_
    
    #if BUILDING_DLL
    # define DLLIMPORT __declspec (dllexport)
    #else /* Not BUILDING_DLL */
    # define DLLIMPORT __declspec (dllimport)
    #endif /* Not BUILDING_DLL */
    
    class DLLIMPORT DllClass
    {
      public:
        DllClass();
        virtual ~DllClass(void);
        long quadrat(long x);
    
      private:
    
    };
    
    #endif /* _DLL_H_ */
    

    dllmain.cpp:

    #include "dll.h"
    #include <windows.h>
    
    DllClass::DllClass()
    {
    
    }
    
    DllClass::~DllClass ()
    {
    
    }
    
    BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                           DWORD reason        /* Reason this function is being called. */ ,
                           LPVOID reserved     /* Not used. */ )
    {
        switch (reason)
        {
          case DLL_PROCESS_ATTACH:
            break;
    
          case DLL_PROCESS_DETACH:
            break;
    
          case DLL_THREAD_ATTACH:
            break;
    
          case DLL_THREAD_DETACH:
            break;
        }
    
        /* Returns TRUE on success, FALSE on failure */
        return TRUE;
    }
    
    long quadrat(long x)
    {
        return x * x;
    }
    

    Das ist ja noch größenteils der von der IDE vorgegebene Code.

    Meine Frage ist jetzt, was muss ich machen, damit die Funktion "quadrat" verfügbar mache, wenn ich das Programm in einem anderen lade!?!

    Gruß

    internetfreak



  • Mach die Funktion global (ausserhalb der Klasse). Die Klasse kannst du loeschen.

    #ifndef _DLL_H_
    #define _DLL_H_
    
    // irgendwo solltest du BUILDING_DLL definieren (z.B. in den Projektoptionen)
    
    #if BUILDING_DLL
    # define DLLIMPORT __declspec (dllexport)
    #else /* Not BUILDING_DLL */
    # define DLLIMPORT __declspec (dllimport)
    #endif /* Not BUILDING_DLL */
    
    extern "C" // benoetigt bei c++ compilern
    long DLLIMPORT quadrat(long x);
    
    #endif /* _DLL_H_ */
    

    Rest kann soweit ich das ueberblicke so bleiben. Als DLL kompilieren und fertig.

    Gruss,
    DeSoVoDaMu



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum WinAPI in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten