Eigene DLL einbinden

Chuckeey

Grünschnabel
Hallo zusammen,

ich habe ein, zwei Fragen zu der Einbindung von selbst erstellten .dll Dateien in mein C++ Projekt.

1. Kann ich überhaupt die Funktionen und Klassen einer .dll nutzen ohne die Header Dateien zu haben oder sind die header Dateien zwingend notwendig ?

2. Wie hängen die lib Datei und die dll Datei zusammen und wie binde ich diese korrekt in mein Projekt ein ?

Vielen Dank schonmal für euer Bemühen!

Gruß Chuckeey
 
Zu 2: Die lib brauchst nur du zum kompilieren, nicht zum Ausführen
Die DLL brauchst du eben dann zum ausführen

Wie du die lib in dein Projekt einbindest, hängt von der Entwicklungsumgebung ab; welche verwendest du?
Standartmäßig sind dort schon verschiedene .lib-Dateien vom Betriebssystem eingetragen, falls du das findest einfach deine dazuschreiben.

Zu 1: Ja, eine DLL kannst du auch ohne lib/h verwenden, indem du sie mit eigenem Code während des Programmablaufs nachladest (zumindest unter Windows, vom Rest keine Ahnung). Normalerweise wird sie ja beim Programmstart vom Betriebssystem geladen.

Dafür musst du aber a) die Namen/Parameter etc der Funktionen wissen, die du verwendet willst

Außerdem kommt ggf. b) Mangling noch dazu: Der Compiler benennt deine Funktionen beim Kompilieren nach einem gewissen System um, um zB Funktionen mit gleichem Namen aber verschiedenen Parametern zu ermöglichen. Wenn du alles ordentlich mit h/lib einbindest, merkst du garnichts davon;
beim Nachladen musst du aber die "echten" Funktionsnamen wissen: http://en.wikipedia.org/wiki/Name_mangling

Gruß
 
Hi,

ich nutze Visual Studio 2010.

Also könnte ich einfach in den Projekt Properties das Verzeichnis von meiner .dll hinzufügen, wo die h. Dateien liegen. Dann noch in den Linker Properties das additional Lib Verzeichnis einstellen und das wars ?

Gruß Chuckeey
 
Nur zur Hälfte.
Die Verzeichnisse, wo die Dateien liegen, reichen nicht.
Du musst die Dateien auch selber angeben, bei .h eben im Code mit include
und bei .lib auch irgendwo in den Einstellungen.

Ich weiß nicht, wie es bei der Version 2010 ist, aber wahrscheinlich kannst du die libs auch im Code einbinden

#pragma comment(lib,"abc.lib")

Probiers mal so.
 
Zurück