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