Wie benutze ich c # Dll in vc ++?

7

Ich habe eine DLL mit der Befehlszeile (csc) erstellt. Angenommen, dll enthält die Methode Add (int, int). Nun möchte ich diese Add-Funktion in VC ++ verwenden?

Wie geht das?

Ihre Hilfe wird sehr geschätzt.

Hier ist was ich tue.

vcproj; Für dieses Projekt habe ich Rechtsklick und Linker-Abschnitt hinzufügen zusätzliche Abhängigkeiten. Hinzugefügt den Pfad, in dem dll befindet.

main.cpp

%Vor%

Fehler-Namespace Test Gibt es nicht.

Wie löst man das?

Ich muss diese DLL wie im nicht verwalteten Code verwenden

    
Cute 11.06.2009, 12:28
quelle

3 Antworten

9

Ihre C # -Assembly benötigt das ComVisible-Attribut (neben einigen anderen Dingen).

%Vor%

Es gibt eine Anleitung, dies hier zu tun .

    
Matthew Brindley 11.06.2009 12:33
quelle
8

Von MSDN-Foren Aufruf von C # aus nicht verwaltetem C ++ :

  

Was Sie tun möchten, wäre zu   kompiliere nur die Dateien wo du willst   um den C # -Code / clr zu laden und dann anzurufen   weg mit C ++ / CLI. Der Rest von dir   App bleibt nativ, während diese cpp   Dateien, die Sie kompilieren / clr wird gemischt   nativ und CLR. Du solltest dazu fähig sein   rufen Sie einfach mit Ihrer C # -Bibliothek auf   C ++ / CLI-Syntax.

     

Sobald du / clr auf die cl.exe geworfen hast   Befehlszeile für eine Datei, innerhalb der   Datei können Sie beliebigen verwalteten Code aufrufen   das willst du, egal ob   Es wurde in VB.net, C # oder geschrieben   C ++ / CLI. Dies ist bei weitem die einfachste   Möglichkeit zu tun, was Sie tun möchten (C # anrufen   Code von Ihrer nativen C ++ App),   obwohl es seine Vorbehalte und hat   Einschränkungen. Im Großen und Ganzen obwohl "Es   Just Works ". Es ist auch schneller als   p / ruft auf.

    
Dana Holt 11.06.2009 12:35
quelle
2

Dies hängt stark davon ab, welche Art von C ++ - Anwendung Sie erstellen. Wenn Sie eine C ++ / CLI-Assembly erstellen, müssen Sie sicherstellen, dass das Projekt einen Verweis auf die C # -DLL enthält. Sobald das erledigt ist, sollten Sie in der Lage sein, den Code wie geschrieben einzugeben und dabei eine Definition von Demo zu haben.

%Vor%

Wenn Sie ein normales, nicht verwaltetes C ++ - Projekt erstellen, müssen Sie COM-Interop verwenden, um auf die Assembly zuzugreifen. Dazu muss der Demo-Typ in Ihrem C # -Projekt COMVisible erstellt und für das COM-Interop registriert werden. Danach können Sie wie jede andere COM-Komponente darauf zugreifen.

    
JaredPar 11.06.2009 13:27
quelle

Tags und Links