.NET DLL (Class library) erstellen um in anderer Anwendung zu benutzen
-
Hallo zusammen,
ich sitze hier gerade an einem Problem.
Erstmal eine Vorinfo:
Mir liegt der Quellcode einer VB.NET Class library plus das Kompilat in DLL Form vor. In der DLL befindet sich eine Klasse, wo diverse Methoden auf .NET Klassen zurückgreifen.Mir ist es bis jetzt nicht gelungen diese DLL in mein VC++ Programm (zur Laufzeit) einzubinden und die jeweiligen VB Methoden zu benutzen.
Vermutlich ist das garnicht möglich. Wenn doch , wie?Nun zum eigentlichen Problem:
Meine Idee war jetzt diese DLL ( wo ich ja den Quellcode habe) in VC++.NET umzuschreiben, wo ich ebenfalls eine Class library erzeugen kann.
(In der Hoffnung dass diese neue C++ DLL mir es ermöglicht ihre Methoden von einer C++ Konsolenanwendung aufzurufen)Jedoch weiß ich nicht wie ich diese erzeugte (VC++) DLL in ein Konsolenprogramm einbinden soll?
Es steht mir keine LIB zur verfügung?!?
Oder soll ich mit Loadlibrary arbeiten?Wie man leicht bemerkt bin ich Neuling im Bereich CLI.
Habe da noch nicht so meine Erfahrung...Kann mir jemand nen Tipp geben?
Wie sollte ich am besten vorgehen?Kurze wiederholung:
Class library (dll) -> VB.NET
Konsolenanwendung -> VC++(.NET)danke für eure hilfe
-
Füge einen Verweis auf die DLL im VC Projekt hinzu und schon liegt alles, was in der vb.net DLL als Public makiert ist, im passenden Namensraum zum Verwenden.
-
Habe nun die DLL als Verweis hinzugefügt.
Jedoch wüsste ich jetzt nicht wie ich auf die Methoden zugreifen soll?Habe versucht direkt ein Objekt anzulegen..war wohl der falsche Weg.
im passenden Namensraum
-
Naja, mit den wenigen Informationen lässt sich eigentlich nix anfangen.
Beispiel:
Namespace testdll Public Class Class1 Public Function test() MsgBox("Test") End Function End Class End Namespace
// testclient.cpp: Hauptprojektdatei. #include "stdafx.h" using namespace System; using namespace test; int main(array<System::String ^> ^args) { Console::WriteLine(L"Hello World"); test::testdll::Class1 ^ t = gcnew test::testdll::Class1; t->test(); return 0; }
-
Ok habs mal eben ausprobiert.
In meinem VB.NET Dll (Class library) Projekt haben die Zeilen
Namespace testdll
und
End Namespace
gefehlt. Habe sie hinzugefügt und eine neue dll erstellt.
Soweit so gut,
Um diese nun in meine VC Projekt zu benutzen
using namespace test;
müsste es hier nicht "testdll" heißen ?
Naja , bei mir klappt es jedenfalls nicht.
C2871 : 'testdll' : a namespace with this name does not exist
Hab ich was vergessen?
danke!
-
Hab ich was vergessen?
Ja, mal die Grundlagen lesen und nachsehen was Namespace und public eigentlich bedeutet.
Da Du noch immer nicht auf Details des Problemes eingehst (fehlender Code, fehlermeldungen etc.), könnte das hier helfen:
-
Hallo nochmal,
was ein namespace ist, ist mir schon klar.
Jedoch habe ich es noch nie im zusammenhang mit DLL's genutzt.
Was public's sind, ist auch klar.Mein Problem habe ich meiner Meinung nach schon geschildert, vielleicht etwas umständlich
Ich will die Metohden von der VB.NET DLL in meinem VC++ Projekt benutzen.
Das ist alles.
-
Knuddlbaer schrieb:
Hab ich was vergessen?
Ja, mal die Grundlagen lesen und nachsehen was Namespace und public eigentlich bedeutet.
...
Dem kann ich nur zustimmen.
Da ich noch nie VB-Code in ein C++/CLI Projekt eingefügt habe, habe ich es gerade mal ausprobiert.
VB Klassenbibliothek-Projekt "ClassLibrary1" angelegt.
Public Class Class1 Public Sub Test() MsgBox("Hallo") End Sub End Class
C++/CLI Konsolenanwendung hinzugefügt. Verweis auf VB-Projekt eingefügt.
#include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { ClassLibrary1::Class1^ test = gcnew ClassLibrary1::Class1(); test->Test(); return 0; }
Geht ohne Probleme.
Also Folge dem Rat und lerne erstmal die Grundlagen.
Es gibt mittlerweile auch schon deutsche Einsteigerbücher zu C++/CLI
-
Ich will die Metohden von der VB.NET DLL in meinem VC++ Projekt benutzen.
Dann lies die Dokumentation, ich weiß nicht was Du hier erwartest. Es wurde bereits ein komplettes Beispiel gepostet.
Helfen kann man nur den Leuten, die Hilfe haben wollen. Wer alles auf nem silbernen Tablett vorn A... getragen haben will, wird hier pech haben.
Wenn Du das hier gelesen und gemacht hast (inkl. Link) , kannst Du Dich mit konkreten Problemen noch mal melden.
Da Du noch immer nicht auf Details des Problemes eingehst (fehlender Code, fehlermeldungen etc.), könnte das hier helfen:
-
Es gibt mittlerweile auch schon deutsche Einsteigerbücher zu C++/CLI
Für so eine kleine Sache , womit ich normalerweise nicht arbeite, ist es meiner Meinung nach viel schneller in nem CLI Forum nachzufragen.
Das heißt nicht dass es schlecht ist sich so ein Buch zu holen und sein wissen in diesem Bereich zu erweitern.Wer alles auf nem silbernen Tablett vorn A... getragen haben will, wird hier pech haben.
Ich wollte sicherlich nichts auf nem silbernen Tablett haben....
Ich habe ja nicht gesagt .."Hier das ist mein Problem, schreib mir bitte das Programm dafür"Nix gegen dein Beispiel, hab es jetzt nochmal probiert. Siehe da, es geht.
(Ohne Namensraum)