我尝试将网络摄像头支持集成到 C# 解决方案中。首先,我从 Touchless.Vision 中学到了很好的例子。它包含具有 3 个组件的 C# 解决方案: - 一个 Windows 窗体项目(C#,任何 CPU) - 一个包装项目(C#,任何 CPU) - WebCamLib 项目(C++,x64)
我使用Win7 x64。所以这个例子工作正常。至少从我将 C 库/项目的平台目标从 Win32 更改为 x64 的那一刻起。
但后来我在另一个 C# 解决方案下添加了两个项目(C# 包装器和 C++ 项目)。现在它从 C++ 项目中调用方法时总是失败。
System.BadImageFormatException was unhandled by user code
Message="Could not load file or assembly 'WebCamLib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format."
Source="Touchless.Vision"
FileName="WebCamLib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
FusionLog=""
StackTrace:
at Touchless.Vision.Camera.CameraService.<BuildCameraList>d__0.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Touchless.Vision.Camera.CameraService.get_AvailableCameras() in C:\CustomWare.NET\CustomWare\WebCamWrapper\Camera\CameraService.cs:line 40
该解决方案也使用 AnyCPU 平台。我认为不应该有任何基于平台的冲突。
这两种情况有什么不同?我应该检查什么?