C++ Klasse als DLL unter VB verfügbar machen
-
Hallo,
ich suche nach einer gescheiten anleitung wie ich eine C++ Klasse in einer DLL unter VB 6 verfügbar mache. Google lieferte wenig Hilfe.Problem: Es soll in C++ eine DLL geschrieben werden die auch aus VB herraus aufrufbar ist
Allerdings scheitert es daran VB die C++ Klasse bekannt zu machen.
Ich hab gelesen das ich um das zu umgehen Wrapperfunktionen schreiben darf.Danke schonmal im voraus für Hilfe

-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hi,
so weit ich weiss kannst du keine in eine DLL ausgelagerten C++-Klassen in einem VB-Programm aufrufen (das geht gerade einmal bei C++ Programmen untereinander und dem selben Compiler).
Das Problem ist, dass die interne Namensgebung bei thiscall (die Aufrufkonvention bei Methoden) nicht standardisiert ist.
Im allgemeinen exportiert man C-Funktionen. Wenn du intern in der DLL eine Klasse verwendest musst du die von dir bereits erwaehnten Wrapperfunktionen schreiben, welche quasi eine Methode der Klasse als C-Funktion kapseln.Edit:
Noch ein bisschen mehr dazu:class Foo { public: int MacheWas(int i); // die Funktion soll genutzt werden };Beispiel fuer eine Wrapperfunktion:
// irgendwo liegt ein (fuer die DLL) globales Objekt der Klasse Foo namens foo extern "C" /*noetig bei C++ Compilern)*/ int __declspec(dllexport) /* zum Exportieren*/ MacheWas(int i) { return foo.MacheWas(i); }Das mal als (ungetestetes) Beispielschnippsel.
Edit2:
Und das ganze muesste sich unter VB dann so bekanntmachen lassen (bin kein VB Spezi, hatte damit noch nie was am Hut^^):Declare Function MacheWas Lib "DLLName.dll" (ByVal i As Integer) As IntegerGruss,
DeSoVoDaMu