了解Windows Store App的DLL加载原因失败

时间:2012-10-11 02:14:16

标签: windows-8 microsoft-metro

我尝试在Windows 8 Store App中使用EmguCV库。以前,它适用于Windows 7桌面应用程序项目。

我确保我的Windows 8商店应用项目目录[ C:\ Projects \ App2 \ App2 \ bin \ Debug ]具有所有必需的DLL文件。

enter image description here

当我通过本地计算机按钮直接在 Microsoft Visual Studio 2012 Ultimate 中执行时,我收到以下异常。

enter image description here

  

异常:抛出:“无法加载DLL'opencv_core240':指定的   无法找到模块。 (HRESULT异常:0x8007007E)“   (System.DllNotFoundException)System.DllNotFoundException是   抛出:“无法加载DLL'opencv_core240':指定的模块   无法找到。 (HRESULT异常:0x8007007E)“

我的问题是:我怎么知道这个失败是由我的Windows 8商店应用无法找到DLL文件引起的?或者,Windows 8 Store App中找到的DLL文件不符合预期的格式? (对于Windows 7桌面软件,DLL是可以的)

如果原因是由Windows 8 Store App无法识别的格式引起的,那么重新编译整个DLL项目(OpenCV源代码是用C ++编写的,而EmguCV用作包装器是在C#中)在< em> Windows应用商店 - &gt;类库(Windows应用商店应用)会有帮助吗?

2 个答案:

答案 0 :(得分:1)

如果这些dll适用于Windows 7桌面应用程序,那么它们将无法用于Windows 8 Metro应用程序,因为它是完全不同的平台和API。您无法在Windows 8 WinRT项目中加载任何DLL。

如果您有dll的源代码,可以尝试将其重新编译为Windows运行时组件,因为原始代码很可能使用WinRT中不可用的API。

答案 1 :(得分:0)

请查看以下两篇帖子,了解如何使用OpenCV或其他第三方库来使用Windows 8商店应用程序:

Using OpenCV in a Windows Store app with Visual C++

Using a C++ Library (built using Visual C++ 2010) in a Windows 8 Store app (built using Visual C++ 2012)