У меня есть приложение для радио FM-тюнера в Silverlight 5 Вне браузера, который вызывает код из Native C++ DLL с моего USB-FM-приемника, используя PInvoke. Это приложение отлично работает в Windows 8 с Silverlight5.PInvoke в приложениях Metro с Windows 8/WinRT
Теперь я пытаюсь перенести его в приложение 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.
Похоже, что в манифесте пакета отсутствует DLL. Текущие документы слишком неясны, чтобы дать хорошую ссылку. –
Взгляните на этот вопрос: http://stackoverflow.com/questions/7807361/how-to-p-invoke-to-a-native-dll-from-metro –
Звук подобный, но все еще не удачный ... –