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
Ihre C # -Assembly benötigt das ComVisible-Attribut (neben einigen anderen Dingen).
%Vor%Es gibt eine Anleitung, dies hier zu tun .
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.
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.
Tags und Links .net c# visual-c++