Fragen zu DLLs
-
Hi,
kann mir jemand sagen, unter welchen Umständen Klassen/Funktionen usw. ausserhalb einer DLL nutzbar sind?
Die __declspec(dllexport) Methode kenne ich. Suche eher sowas, wo ich mir alles aus einer Klasse "saugen" kann.
Danke!
Alex
-
Dann exportiere halt die komplette Klasse
class __declspec(dllexport) MyClass { // .... };
-
eas schrieb:
Dann exportiere halt die komplette Klasse
class __declspec(dllexport) MyClass { // .... };Ups, hab mich mit "__declspec(dllexport) Methode" wohl was unverständlich ausgedrückt. Mir ist schon klar, dass man die ganze Klasse damit exportieren kann.

Suche eher ein Designpattern, wo ich zB. nur eine Klasse declspece, und mir ausserhalb der DLL andere Klassen aus dieser einen Klasse "saugen" kann.
Unter welchen Umständen sind Klassen denn ausserhalb der DLL nutzbar? Habe schon Codes gesehen, in denen nur eine einzelne Klasse gedeclspect war und man trotzdem auf einen Haufen Klassen zugreifen konnte.
Thx
Alex
-
Meinst Du sowas? (Natürlich verpackt in ne Klasse, aber der Einfachheit halber mal ohne):
class XyzIsNotExported { ... }; XyzIsNotExported* __declspec(dllexport) createNewXyz() { return new XyzIsNotExported; }
-
Danke.
Dann muss ich mir aber immer über diese Funktion/Klasse eine Instanz holen, oder?
Eine Version, wo ich dann im eigendlichen Programm Instanzen erstellen kann, gibt's nicht?
-
Und mein nächstes Problem ist, dass der Linker diese Objekte als unresolved externals meldet.

Kann doch nicht sein...

Woran kann das liegen?
-
Daran das du die Dll-Libs nit mitgelinkt ?!
BTW: Falsches Subforum
.
-
Doch, Libs sind gelinkt.
Mein Code ist nur in ein ätzendes Include-Chaos geraten, das ich jetzt erstmal entknoten muss...
-
Das Problem mit den unresolved externals besteht aber weiterhin.
Hier mal ein Beispiel:
class Klasse1 { int foo() { return 1; } }; class __declspec(dllexport) Klasse2 { Klasse1 *getK1Instanz(void) { Klasse1 *out = new Klasse1; return out; } };Klasse1 *bla = getK1Instanz(); bla->foo(); delete bla;Die Methode "foo" kennt er dann nicht...
Jemand eine Idee?
Danke!
Alex
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ups, "Klasse1 *bla = getK1Instanz()" muss natürlich "Klasse1 *bla = K2Instanz->getK1Instanz()" heissen.
-
*push*
Anyone?