2012-11-06 33 views
3

这是this的后续操作。无法加载本机DLL

Windows Phone 8 C#项目(MyApp),从WP7.1迁移而来。我已经将本地Windows运行时组件库(AppLib)添加到解决方案中,并创建了一个参考。里面有一个公开密封的参考类(MyClass)。在C#代码中有一个引用(在主XAML页面的OnLoaded中)。整个事情的构建 - 意味着正在生成组件的元数据。

当我试图在模拟器上运行,该项目失败,出现异常或类型BadImageFormatException以下消息:

试图加载程序格式不正确。 (异常来自HRESULT:0x8007000B)

当您尝试在.NET中混合使用CPU类型时,通常会弹出此错误。

活动平台是“混合平台”。在Configuration Manager中,它被配置为为“x86”构建MyApp,为“Win32”构建AppLib。在运行良好的新鲜生成的vanilla项目中,配置是相同的。

问题 - 该配置有什么问题?我需要检查什么?

编辑:我已经添加了第二个空白C++库到解决方案 - TestLib。这个加载和按预期工作。

编辑2:排除在AppLib中生成的所有内容 - 它的工作原理。现在我将逐个添加行,看哪一个会导致问题...

+0

这是* Windows Phone * WinRT组件吗? –

+0

库的项目类型是“Windows Phone运行时组件”。常规下的属性表说“Windows Phone 8.0(v110)”。 –

回答

1

完全是我的错。当我更改AppLib的名称空间时(请参阅链接的问题),我在库中的一个小声明中留下了一个MyApp名称空间。

错误仍然是误导。我会删除这个问题,但是由于错误消息肯定会发送某人在构建CPU类型和不知情的情况下进行一次疯狂的追逐,请保留它。

0

在大多数情况下,不应该为ARM构建Windows Phone库吗?您是否有机会观看上周//Build/会议的“Windows Phone 8: Using C++ in your Applications”会议?这可能包括一些答案。

+1

WP8仿真器是x86,而不是ARM。还有另一种C#/ C++解决方案可以工作,具有相同的配置(Win32和x86)。 –

+0

也许本地dll引用了不同格式的库? –

+0

我没有添加任何对该库的引用,除了在项目创建时存在的内容。不过,我确实添加了一些资源。但是他们除了香草RTL之外什么都没有提及。 –