C# Headerdateien in VC++
-
Danke für die Antwort!
Aber ich hab noch nie mit DLL gearbeitet!!
Wie erstell ich die richtig?
Wie binde ich sie in das C++ Projekt richtig ein und greife darauf zu??MFG FLO
-
Nur um es klarzustellen: Ich nehme an, dass Du mit C++ eigentlich C++/CLI meinst.
Um die C# DLL (man spricht auch von Assembly) zu erstellen, wählst Du beim erstellen des C# Projekts den Typ "Class Library" aus und kopierst die Sourcen (*.cs) dorthin, nimmst sie beim Projekt dazu und fertig.
Beim C++/CLI Projekt musst Du nun eine Referenz auf dieses neu erzeugte Assembly hinzufügen. (Entweder auf das File direkt oder wenn die beiden Projekte in derselben Solution sind als Projekt Output...).
Fertig.
Beachte bei der C# Library, dass die Default Sichtbarkeit für Klassen internal ist, was bedeutet, dass die Klassen nur innerhalb desselben Assemblies sichtbar sind. Du musst also deine Klasse, welche von ausserhalb zugegriffen werden sollen als public markieren.
Simon
-
Hallo,
C# Projekttyp Klassenbibliothek. Alles was exportiert werden soll, bzw. in Deinem C++ Programm aufgerufen werden muß, machst Du public:
using System; namespace sharpDLL { public class HelloWorldClass { public void HelloWorld() { Console.WriteLine("Hello World"); } } }
C++/CLI Projekt. In den Projekteigenschaften einen Verweis auf die C#-DLL machen und den Namespace inkludieren:
using namespace sharpDLL; int main(array<System::String ^> ^args) { HelloWorldClass ^cls = gcnew HelloWorldClass(); cls->HelloWorld(); return 0; }
Gruß
foodax
-
Danke Leute hat funktioniert und ich bin wieder um einiges schlauer!!
MFG
-
Hallo zusammen,
ich habe ein großes cpp-Projekt und wollte nach diesem Muster meine C#-ClassLibray einbinden. Zum Test habe ich euer Beispiel ausprobiert. Leider ohne erfolg...mein namespace (von c# dll) würde nicht existierenKönnt Ihr mir weiterhelfen?
benötigt Ihr mehr Infos?
-
Lies meinen Beitrag; falls Du mit cpp Projekt ein C++ Projekt und nicht etwa ein C++/CLI Projekt meinst ist der Falls klar.
-
danke für die schnelle Antwort,
aber wie kann ich die Referenz auf dieses neu erzeugte Assembly hinzufügen?ich habe deine Beitrag gelesen, aber zu wenig erfahrung mit Cpp
Bei C# würde ich unter "Verweise" die entsprechende Projektdatei hinzufügen, wie bei einem Cpp-Projekt?
Vielen Dank
-
Genau gleich!?
Project|References...|Add New Reference...
-
jep...danke man, das hat funktioniert
-
noch mal eine generelle Frage:
Habe ich eine chance ein c#-DLL in eine nicht C++/CLI-Projekt einzubinden?In dem C++-Projekt (nicht von mir) habe ich einige Codestellen, wie bei diesem Objektzeiger:
ProgrammData *p = new ProgrammData;
das ist doch nicht C++/CLI oder?
Bei C++/CLI würde es doch eher so aussehen:
ProgrammData ^p = gcnew ProgrammData;
-
andreason schrieb:
noch mal eine generelle Frage:
Habe ich eine chance ein c#-DLL in eine nicht C++/CLI-Projekt einzubinden?"Ja"
1. Via COM Interop: http://www.codeproject.com/KB/COM/COM_DOTNET_INTEROP.aspx
2. Du könntest auch die CLR in deinem Prozess Hostenandreason schrieb:
In dem C++-Projekt (nicht von mir) habe ich einige Codestellen, wie bei diesem Objektzeiger:
ProgrammData *p = new ProgrammData;
das ist doch nicht C++/CLI oder?
Genau. Das ist C++.
andreason schrieb:
Bei C++/CLI würde es doch eher so aussehen:
ProgrammData ^p = gcnew ProgrammData;Genau. Das ist C++/CLI.
-
Wie kann man das machen?