Exportieren Klasse von ausführbaren dll
Frage
Ich brauche in einer DLL, eine Klasse zu verwenden, in einer ausführbaren Datei definiert (DLL und ausführbare durch den gleichen Compiler kompiliert). Aber ich will nicht den Quellcode dieser Klassendefinition DLL, nur Deklaration zur Verfügung stehen.
Eine Möglichkeit, es zu tun ist, alle notwendigen Klassenmethoden machen werden virtual
(so dass DLL-Linker nicht diese Methoden Definitionen müssen). Die Nachteile dieses Ansatzes:
- Ich kann keine Objekte der exportierten Klassen erstellen
in DLL-Code mit
new
(a müssen schaffen zusätzliche Funktionen in ausführbarer Code). - Ich habe alle diese Methoden
virtual
zu machen, auch wenn sonst brauchen sie nicht zuvirtual
werden.
Es gibt eine Möglichkeit, eine Klasse aus einer DLL zu einem ausführbaren mit Microsofts __declspec(dllexport)
Speicherklasse für erweiterte Attribute zu exportieren.
Gibt es eine Möglichkeit, eine Klasse von ausführbarer Datei zu exportieren die gleiche Technik DLL?
Meine alter Borland C 6 Compiler erlauben mir nicht, Import-Bibliothek während des Build von ausführbarem Projekt zu erstellen. (Also, wenn die DLL kompilieren, Linker gibt mir nicht aufgelösten externen Fehlermeldungen für alle importierten nicht-virtuelle Klassenmethoden.) Ist es eine Einschränkung dieses sehr Compiler, oder vielleicht etwas Wichtiges fehlt mir?
Lösung
So weit ich weiß, ist es ok MS VS des Dllexport zu verwenden, um eine Klasse oder Funktion aus einer exe zu exportieren und sie in einer DLL verwenden. und es läuft cool, wenn Ihr DLL und Exe ausführen in einem Prozess .
Andere Tipps
Sie können die Klasse in einer zweiten DLL setzen, wenn Sie es wirklich nicht in der ersten haben wollte.
Ich habe eine harte Zeit, um Ihre Argumentation Verständnis für nicht nur wenn die Klasse in der DLL setzen.