Hi, vom Prinzip her müsstest du den Header auch in dein Projekt einfügen,dafür müsstest du ihn aber etwas anders aufbauen. Dann musst du noch die erzeugte .lib dem Projekt hinzufügen und dafür sorgen dass die Dll an einem Ort ist wo sie gefunden wird(aber am besten nicht im System32 Ordner sondern in dem Verzeichnis deiner .exe).
Damit du den Header auch gebrauchen kannst um die Funktionsprototypen in deinem Projekt bekannt zu machen solltest du ihn etwa so umbauen:
und in der entsprechenden .cpp Datei defininierst du dann __EXPORT_HELLO_API damit das Makro __DLL_API zum exportieren erweitert wird.Wird __EXPORT_HELLO_API nicht definiert wird __DLL_API zum importieren erweitert. Also musst du __EXPORT_HELLO_API nur in der .cpp der Dll definieren und kannst den Header zum Importieren in jedes Projekt normal includen.
Es gibt noch andere Möglichkeiten die Dll Funktion(en) explizit zur Laufzeit zur laden,anstatt diese wie hier zur Compilezeit zu binden. Das hier sollte aber erstmal reichen.
MfG Spacelord -- .....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.Dieser Post wurde am 06.12.2004 um 18:57 Uhr von Spacelord editiert.
meist wird vom Compiler _DLL oder sowas bei einer DLL definiert, damit kann man die unterscheidung dann auch machen -- class God : public ChuckNorris { };
Immer wenn ich versuche das Hauptprogramm zu kompilieren bringt der Linker nen Error, das er das Headerfile nicht gefunden hat. Hab die lib und dll ins Projektverzeichnis kopiert und die lib unter Projekt -> Einstellungen -> Linker eigebunden. -- Cu Dramm
die headerdatei in denen die export-prototypen stehen musst du natürlich in dein projekt einbinden und dort muss er sie auch finden (entweder vollständigen pfad zum header angeben oder den header ebenfalls ins exe-projekt kopieren) -- class God : public ChuckNorris { };
HINSTANCE abc = LoadLibrary("user32.dll"); long *p = GetProcAdress(abc,"MessageBoxW");
so das bringt dir z.B. die Adresse der MessageBox Func im Unicode Format. Der Rückgabetyp von GetProcAdress stimmt glaub ni -> musst mal selber googlen nach : "MSDN GetProcAdress"
Mal abgesehen davon dass du als Rückgabewert nen Funktionspointer brauchst und den Rückgabewert von GetProcAdress nicht einfach in nem long pointer speichern kannst, braucht man auch nen trifftigen Grund wenn man sich den Kram mit dem explizitem Binden antun will. Wenn er doch den Header und die Lib hat sehe ich da auf die schnelle keinen wirklichen Grund für....
MfG Spacelord -- .....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.