dll erstellen und einbinden
-
Hi,
ich möchte eine dll erstellen und in einem anderen Projekt einbinden, weiß aber nicht wie diese geht.
hier mal der Header:
// testdll.h struct dll_basis { virtual int Init()=0; };
Der zugehörige Body:
// testdll.cpp class my_dll : public dll_basis { int Init(); }; int Cgfai_btm::Init() { return 0; } BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } extern "C" __declspec(dllexport) dll_basis* dll_get_obj() { return new my_dll; }
Soweit so gut, erstellen funktioniert. Jetzt will ich diese dll aber in ein eigenes Projekt einfügen. Dazu habe ich den Header, die dll und die erzeugte .lib dem Projekt hinzugefügt. Die Anweisung
dll_basis test;
scheitert aus mir durchaus klaren Gründen. dll_basis ist ja rein virtuell und kann demnach nicht erzeugt werden.
dll_basis test=dll_get_obj();
klappt nicht, weil dll_get_obj nicht gefunden wird.
Wie mache ich das Einbinden der dll und Konstruieren eines dll_basis-Objektes (was dann die Funktionen der my_dll-Klasse aufrufen kann) richtig?
-
ktm schrieb:
dll_basis test=dll_get_obj();
klappt nicht, weil dll_get_obj nicht gefunden wird.
Klar - pack' die dll_get_obj() einfach mit in deinen Header. Ansonsten kann man Objekte aus abstrakten Klassen nicht direkt anlegen, sondern nur als Pointer:
dll_basis *test=dll_get_obj();
(btw fehlt in deinem Quellcode eine Definition von "my_dll::Init();")