Ich habe ein C++ - Programm entwickelt, das OpenCV verwendet. Jetzt möchte ich eine Windows Form basierte Anwendung in C# entwickeln. Da C# nur verwalteten Code verarbeiten kann, ist es fast unmöglich, OpenCV direkt in C# auszuführen. Ich habe nach verschiedenen Möglichkeiten gesucht, C# -Anwendung mit OpenCV zu erstellen, eine davon ist EmguCV und die andere Methode, die ich viel mehr interessiert ist Importieren der C++ - DLL-Datei in C# -Anwendung und Aufruf der nicht verwalteten Funktionen auf diese Weise.Aufruf von opencv C++ - Code in C# -Anwendung
Ich begann mit dem Erstellen von einfachen Funktionen in C++ und ich konnte cout
und cin
in meiner C# -Anwendung durch Importieren der DLL verwenden. Das Problem kommt, wenn ich versuche zu OpenCV-Header-Dateien in meiner C++ Anwendung umfassen und wenn ich ich diesen Fehler kompilieren erhalten
Fehler LNK1104: Datei kann nicht geöffnet ‚tbb_debug.lib‘
Irgend jemand getan hat dies vor, aber ich kann nicht herausfinden, wie er C-Schnittstelle ++ mit C# in Displaying webcam feed in cv::Mat format in a picturebox
die Frage ist, dass ich Funktion haben, die in einem cv :: Mat Variable und führt einige Bildverarbeitung auf sie und gibt die verarbeiteten Matrix nimmt. Ich möchte diese Funktion in C++ in meiner C# -Anwendung geschrieben verwenden. aber das Problem ist, dass ich die DLL nicht erstellen kann, wenn ich OpenCV-Bibliothek in C++ einschließe.
Also bitte nicht vorschlagen, EmguCV oder andere .NET Wrapper für OpenCV zu verwenden.
Ich verwende Visual Studio 2010 für mein Projekt.
Was ist die Frage? Sie haben bereits erwähnt, dass Sie eine DLL erstellen und auf diese über P/Invoke zugreifen können. Sie können auch C++/CLI verwenden, um eine Assembly zu schreiben, die auf native Header zugreift und native Bibliotheken verwendet. Was den Linkfehler angeht, haben Sie nicht genügend Informationen zur Verfügung gestellt, um zu sagen, was falsch ist. – Spook
Ich habe den Beitrag bearbeitet, wenn ich versuche, eine Methode zu schreiben, die OpenCV verwendet, bekomme ich einen Fehler, den ich oben geschrieben habe, so dass die DLL nicht erstellt werden kann, aber wenn ich nur Cout und Cin kein Fehler kam und die DLL erfolgreich erstellt wurde –