2014-10-16 83 views
0

我正在尝试使用opencv制作一个iSpy插件来处理图像数据。
iSpy是用C#.NET编写的,因此必须是它们的插件,因此我需要OpenCV(用C++编写)的包装器。我尝试使用EMGUCV和OpenCVSharp;基于emgu的插件甚至没有作为插件运行(它也非常过时),并且ocvsharp存在一些我无法为这个项目留下的大问题。构建使用opencv的iSpy插件

由于使用C#包装是不是一种选择了,我开始做一个非托管C++项目,该项目实现了我需要的插件功能,并建立它作为一个64位的DLL,并试图弥补这方面的方法和功能的包装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甚至不会接受它作为有效的插件。我能做些什么来让我的C++ DLL从插件运行?

回答

0

好的,我完全误解了发生了什么事。 iSpy是为x86编译的,因为它使用FFMPEG for x86(我真的不知道为什么他们会这样做),所以我可以简单地构建我的x86插件并完成它。 而不是使用托管的C++项目,我恢复使用PInvoke并在C#项目中创建包装类。问题解决了。