PInvoke в приложениях Metro с Windows 8 / WinRT

У меня есть простое приложение FM Radio Tuner в Silverlight 5 вне браузера, которое вызывает код из собственной библиотеки C ++ DLL из моего USB FM-приемника с помощью PInvoke. Это приложение отлично работает в Windows 8 с Silverlight5.

Сейчас я пытаюсь перенести его в приложение Metro с помощью WinRT.

Переход с Silverlight на пользовательский интерфейс XAML довольно прост и прошел успешно. Сигнатуры и атрибуты PInvoke были обнаружены нормально с пространством имен System.Runtime.InteropServices и атрибутом DLLImport.

Проблема в том, что когда я запускаю приложение и вызываю любой метод из собственной библиотеки DLL PInvoked, которая раньше работала в моем приложении SL5 (которая отлично работает даже в Windows8), у меня возникает следующее исключение:

System.DllNotFoundException was unhandled by user code
  Message=Unable to load DLL 'CarTFTFM.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
  Source=metroradio
  TypeName=""
  StackTrace:
       at MetroRadio.FMRadio.HWInit2(Int32 port, Int32 initVolume)
       at MetroRadio.MediaService.InitializeRadio() in c:\Users\Gutemberg\Documents\Visual Studio 11\Projects\MetroRadio\MetroRadio\MediaService.cs:line 160
       at MetroRadio.MainPage.radio_Click(Object sender, RoutedEventArgs e) in c:\Users\Gutemberg\Documents\Visual Studio 11\Projects\MetroRadio\MetroRadio\MainPage.xaml.cs:line 43
  InnerException: 

Итак, у меня вопрос, в чем проблема с этим PInvoke? Поскольку он хорошо работает в Windows8 с приложением SL5, я не вижу причин для проблем с приложениями WinRT / Metro.

8
задан Kevin Vermeer 24 January 2012 в 18:30
поделиться