2014-10-16 4 views
0

Я пытаюсь сделать плагин iSpy с помощью opencv для обработки данных изображения.
iSpy написан на C# .NET и поэтому должен быть их плагинами, поэтому мне нужна оболочка для OpenCV (которая написана на C++). Я пробовал использовать EMGUCV и OpenCVSharp; Плагин, основанный на emgu, даже не запускался как плагин (также он очень устарел), и ocvsharp имеет некоторые большие проблемы с производительностью, которые я не могу обнажить для этого проекта.Создание плагина iSpy, который использует opencv

С тех пор, как использование оболочек C# больше не было вариантом, я начал создавать неуправляемый проект на C++, который реализует функциональность, которая мне нужна для плагина, и построила ее как dll x64 и попыталась сделать оболочку для этих методов и функций C#, чтобы использовать его в плагине. Пока что так хорошо, обертка отлично работает, когда снаружи iSpy.
Когда я пытаюсь запустить плагин, который включает в себя эти проекты через ISpy я получаю:

System.BadImageFormatException was unhandled by user code 
HResult=-2147024885 
Message=An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) 
Source=ImageProcessing 
StackTrace: 
    at ImageProcessing.WrappingMiddleman.Pootis() 
    at ImageProcessing.ObjectsFinder..ctor(String path, FinderTypes finderType) in c:\Users\Matias Lopez\Documents\GitHub\CCAddons-Testing\FaceSurveillance\ImageProcessing\ObjectsFinder.cs:line 63 
    at CCAddons.Main.InitConfig() in c:\Users\Matias Lopez\Documents\GitHub\CCAddons-Testing\FaceSurveillance\FaceSurveillance\Main.cs:line 162 
    at CCAddons.Main.set_Configuration(String value) in c:\Users\Matias Lopez\Documents\GitHub\CCAddons-Testing\FaceSurveillance\FaceSurveillance\Main.cs:line 155 
InnerException: 

, который, от того, что я видел, значит есть проблема с решением платформы не соответствуют или что-то.
Теперь проблема в том, что мне нужен плагин для AnyCPU, а не x64, так как iSpy даже не примет его как действительный плагин, если нет. Что я могу сделать, чтобы запустить dll для C++ из плагина?

ответ

0

Хорошо, я неправильно понял, что происходит. iSpy построен для x86, потому что он использует FFMPEG для x86 (я честно понятия не имею, почему они это сделают), поэтому я могу просто построить свой плагин для x86 и сделать с ним. Вместо использования управляемого проекта C++ я вернулся к использованию PInvoke и создав класс оболочки в проекте C#. Задача решена.

Смежные вопросы