C # / C ++ in der gleichen Lösung - DllImport findet DLL nicht

8

Ich habe eine Lösung mit einem C ++ - DLL-Projekt und einem C # -Projekt, das es verwendet. Das Problem besteht darin, dass der Build-Pfad des C ++ - Projekts im Lösungsordner und das c # im bin -Ordner des Projekts liegt (jeweils verschachtelt mit Debug / Release), so dass DllImport sie nicht findet.
Gibt es einen Standard Weg dies zu beheben?

    
baruch 28.11.2011, 16:53
quelle

1 Antwort

6

Sie sollten den Build-Pfad für beide Projekte in dasselbe 'bin'-Verzeichnis setzen, vorzugsweise für die Lösung, nicht für ein Projekt. Dann machen Sie einfach alle Projekte zu diesem einen Ordner. Sie können dies in den Projekteinstellungen ändern.

Eine andere Technik besteht darin, einen Post-Build-Schritt für die C ++ - Anwendung zu verwenden, der die DLL in den C # -Projektordner kopiert. Auf diese Weise ändern Sie eigentlich keine Pfade. Sie kopieren einfach über eine DLL. Seien Sie hier jedoch vorsichtig, denn wenn Sie das Projekt der C ++ Datei bereinigen, können Sie die Kopie tatsächlich noch im Verzeichnis C # projects bin haben, was Sie den Kopf kratzen lässt, warum die Dinge nicht wie erwartet funktionieren.

Alternativ können Sie die C ++ - DLL auch auf einem Systempfad bereitstellen (auch als Teil eines Post-Build-Schritts), aber Sie haben die gleichen Probleme wie oben beschrieben.

Zum Debuggen würde ich diese in der angegebenen Reihenfolge empfehlen.

    
MarqueIV 28.11.2011, 17:04
quelle