У меня есть простое приложение для FM-радио-тюнера в Silverlight 5 вне браузера, которое вызывает код из Native C ++ DLL из моего USB FM-приемника, используя PInvoke.Это приложение очень хорошо работает в Windows 8 с Silverlight5.
Теперь я пытаюсь перенести его в приложение Metro с помощью WinRT.
Переход с Silverlight на пользовательский интерфейс XAML довольно прост и работает хорошо.Сигнатуры и атрибуты PInvoke были обнаружены с помощью пространства имен System.Runtime.InteropServices и атрибута DLLImport.
Проблема заключается в том, что когда я запускаю приложение и вызываю любой метод из собственной библиотеки 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.