dll dllexport/dllimport



  • hi
    ich möchte eine dll erstellen und meinen header nicht ändern.

    dazu habe ich sehr oft das gefunden:

    #ifdef BUILD_DLL
    #define DLL __declspec(dllexport)
    #else
    #define DLL __declspec(dllimport)
    #endif
    

    bei mir wird aber immer importiert.....

    wieso das?(so oft wie ich das gefunden habe müsste das ja stimmen)

    und wieso soll das eigendlich funktionieren? (ich habe ja niergens ein #define BUILD_DLL..... daher wird doch immer dllimport genutzt.)



  • Hallo,

    BUILD_DLL ist wahrscheinlich in den Projekteigenschaften des DLL-Projektes gesetzt.

    Ansonsten kannst Du auch AFX_EXT_CLASS nutzen 🙂

    Gruss
    foo



  • ok ich wollte jetzt

    #define DLL AFX_EXT_CLASS
    .....
    class DLL Logfile......
    

    benutzen.

    allerdings wird mir jetzt angegeben:

    "Logfile": Sieht wie eine Funktionsdefinition aus, es ist aber keine Parameterliste vorhanden; sichtbarer Funktionstext wird übersprungen.
    

    und wenn ich zur deffinition von AFX_EXT_CLASS springen will, dann lande ich direkt bei

    class DLL Logfile
    

    was mache ich falsch?



  • class AFX_EXT_CLASS CMyClass
    {
    
    }
    

    Gruss
    foo



  • die punkte stehen nur für noch mehr quelltext....

    #define DLL AFX_EXT_CLASS
    .....
    class DLL Logfile{......}
    

    ich habe danach natürlich noch den rest der klasse.

    und es macht keinen unterschied, ob ich

    #define DLL AFX_EXT_CLASS
    .....
    class DLL Logfile{......}
    

    oder

    class AFX_EXT_CLASSLogfile{......}
    

    schreibe.



  • class AFX_EXT_CLASS CMyClass 
    {
    // <body of class>
    };
    

    das ist fast identisch mit dem aus msdn, aber ich bekomme den fehler:

    error C2470: "CMyClass": Sieht wie eine Funktionsdefinition aus, es ist aber keine Parameterliste vorhanden; sichtbarer Funktionstext wird übersprungen.
    

    was mache ich falsch?



  • ok habs jetzt anders geregelt....

    #ifdef MY_BUILD_DLL
    #define DLL __declspec(dllexport)
    #else
    #define DLL __declspec(dllimport)
    #endif
    

    MY_BUILD_DLL muss im präprozessor deffiniert werden


Anmelden zum Antworten