was tun anstatt #include?
-
Hallo,
ich habe folgendes Problem: ich habe eine Bibliothek (geschrieben in C, auch mit C++ Klassen). nun möchte ich aber ein neues Projekt in .NET anlegen, was ohne zweifel gut funktioniert. was muss ich allerdings machen, um die c++ klassen in einer c# anwendung einzubinden? in c# gibt es ja solche sachen wie include nicht mehr?!
gruß
sibiria
-
Meinst du mit C++ das 'echte' C++ oder managed C++?
-
Falls deine Bibliothek managed C++ ist, einfach im Solution Explorer "Add Reference" auswählen und unter Projects deine Assembly auswählen.
Ist es eine reine C/C++ Bibliothek, musst du mit dem DllImport-Attribut arbeiten.
-
Genau da liegt mein Problem. Ich habe mit dem dll-Import gearbeitet. das funktioniert auch ganz toll, allerdings bekomme ich bei der ausführung meiner anwendung eine fehlermeldung, die etwa so lautet: kein Entry-Point in der dll gefunden.
-
Du mußt mit Dumpbin -Export herausfinden wie die Exportfunktionen heißen. Man kann mit DllImport keine Klassen importieren.
Oder du schreibst mit C++.NET einen Wrapper-Klasse. Keine Ableitung, sonder Komposition. Da man ja keine __gc Klasse von einer native Klasse ableiten kann.
Oder du schreibst alles noch mal mit COM.
-
Hi.
Hast Du mit DllImport auch den E
instiegspunkt definiert?
-
Wo kann ich denn diese Einstellung vornehmen?
-
[DllImport("Name der Dll", EntryPoint = "Name der Funktion")]
Nach dem Namen der Dll und einem komma musst du angeben, den genauen Namen der Funktion die du Exportieren möchtest .
-
[DllImport("Name der Dll", EntryPoint = "Name der Funktion")]
Nach dem Namen der Dll und einem komma musst du angeben, den genauen Namen der Funktion die du Exportieren möchtest .
-
Leider habe funktioniert das nicht so einfach, da ich mehrere Funktionen exportieren möchte. Trotzdem danke für den Tip.
-
Dann musst du alle die Funktionen nacheinander exportieren.
Andere Lösung kenne ich nicht.