Funktionen einer DLL
-
Ich hab da mal eine grundlegende Frage zum erstellen einer dll.
Und zwar werden ja die zu exportierenden Funktionen speziell ausgezeichnet.
Was ist aber mit den Funktionen die nicht exportiert werden sollen, sondern nur für die Export Funktionen da sind(interne berechnungen etc.)?
Werden die dennoch so deklariert?Und eine zweite Frage hab ich noch.
Gibts hier irgendwo ein Tutorial was sich mit der erstellung von dll´s befasst.
Was gut erklärtes, ich mein ich hab mir jetzt schon viel erlesen.
Oder aber so ein paar beispiele wären nicht schlecht, etwas komplexeres als nur eine simple berechnung addition etc. in einer funktion.Und wo kommen die ganzen deklarationen bzw. variablen strukturen hin.
Hab was von dem AttachProcess gelesen, aber keine weiterführende Lektüre.
Das weiß man sicher alles wenn man genug Erfahrung mit C++ hat, ich aber muss noch lernen.
Brauch das aber eben nunmal.
-
Das ist eigentlich keine C++ Frage sondern eine Windows-spezifische Geschichte.
-
Und zwar werden ja die zu exportierenden Funktionen speziell ausgezeichnet.
Was ist aber mit den Funktionen die nicht exportiert werden sollen, sondern nur für die Export Funktionen da sind(interne berechnungen etc.)?
Werden die dennoch so deklariert?Funktionen und Typen die nicht exportiert werden sollen, werden auch nicht so gekennzeichnet.
Und wo kommen die ganzen deklarationen bzw. variablen strukturen hin.
So wie immer. Ein Trennung von exportierten / nicht exportierten Dingen bietet sich an.
Hier ist ein guter Einstieg:
http://msdn.microsoft.com/en-us/library/z4zxe9k8.aspxGenerell kann ich zwei Arten von "selbstgestrickten" DLL's empfehlen:
1. API in Form von exportierten von C Funktionen.
2. API in Form von zweier exportierten C Funktionen (eine fürs Erzeugen, eine für Zerstören) und eine Klasse mit nur rein virtuellen Methoden (und natürlich einer nicht exportierten Impl.).(2. ist die Art wie das COM mit C++ macht.)
Eine dritte Variante, Typen zu exportieren (__declspec(dllexport) für Klassen), zieht einige (negative) Konsequenzen mit sich. (Ich rate davon ab.)
Für das Thema portabilität und DLL's kann ich das Buch Imperfect C++ empfehlen. http://www.synesis.com.au/publishing/imperfect/cpp/
Simon