Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

27.02.2007, 21:31

API: Wieder die dlls!

Hallo :!:
Ich habe wieder eine Frage mit den Dlls!
Ich möchte eine dll laden und eine KLASSE "aufrufen".
Wie das bereits mit Funktionen geht habe ich verstanden:
Also mit

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
typedef void(*function1)(void);
function1 DllFunktion1;

HMODULE hLib=LoadLibrary("test.dll");

DllFunktion1=(function1)GetProcAddress((HMODULE)hLib, "saghallo");


DllFunktion1();

FreeLibrary((HMODULE)hLib);

Doch wie geht das mit Klassen?
Gruß Flo

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

2

27.02.2007, 21:51

Du kannst nich einfach eine Klasse aus einer DLL importieren!

Ein moegliches Workaround ist es dir erstmal eine Methode zu schreiben die eine Instanz dieser Klasse zurueckliefert, a la MyClass* CreateClass(void). Deine Anwendung kann damit aber noch immer nichts anfangen. Daher schreibst du dir einfach eine Basis-Klasse von der MyClass erbt, also steht in der DLL sowas wie class MyClass : public DLLExportClass. Alle Methoden die du dann verwenden willst muessen virtuell/abstrakt sein.
Die Klasse DLLExportClass wird also sowohl im Programm, als auch in der DLL definiert, du musst also darauf achten dass die Definitionen identisch sind. (Ich habe einfach den selben Header verwendet)
"Have you tried turning it off and on again?"

3

27.02.2007, 21:59

Wenn du es zur Laufzeit haben musst ... ja Interfaces wäre da was ... an sonnsten warum nicht beim builden schon mit reinhauen? muss ja nicht statisch sein ...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

4

28.02.2007, 14:19

Ok danke!
Ist dann wohl doch zu kompliziert!
Lieber dann ins Projekt einbinden. Wird wohl einfacher sein ;)

Gruß Flo

Werbeanzeige