我目前正在VS 2008中开发一个应用程序,其中我有一个非托管C ++库(A),它包含两个现有库(B + C)以简化功能。 (A)已证明有效,我可以在c ++测试应用程序中成功调用和使用它。
(A)的主要目的是由C#应用程序使用,为了做到这一点,我遵循以下链接:http://blogs.msdn.com/b/borisj/archive/2006/09/28/769708.aspx来创建CLI包装器(D)。
一切似乎都很好,一切都在编译,我试图在一个简单的C#应用程序中测试它。我添加了对(D)的引用并启动程序只是为了在尝试使用该类时接收BadImageFormatException。根据我的阅读,人们建议在某些地方的DLL中存在容器不匹配,但是我已经在Win32中将它们全部构建为相互匹配。
除此之外,我还提供了(D)和C#应用程序所需的所有DLL的副本,但似乎仍然存在问题。我注意到在编译时没有为(D)创建一个dll,这是我猜测它为什么会崩溃的原因,但是我是新手,我不知道它是否应该。
我是否可能没有在我忽略的某个地方包含一个导致此问题的DLL?
TLDR:A包装B + C,A由D包装以在C#应用程序中使用,但它会命中并发生异常。 (我已将所有DLL放在他们应该去的地方(据我所知)并确保它们都匹配)。有没有我可能错过的陷阱?
答案 0 :(得分:4)
尝试将编译模式更改为x86或任何CPU模式。
右键单击解决方案>配置管理器。
或
构建>配置管理器
在Configuration Manager中更改要在x86或ANy CPU中编译的所有项目,同时尝试两者。