Ich habe eine einfache FM Radio Tuner App in Silverlight 5 Out-of-browser, die Code aus einer Native C++ DLL von meinem USB FM Receiver mit PInvoke aufruft. Diese Anwendung funktioniert sehr gut in Windows 8 mit Silverlight5.
Jetzt versuche ich, sie mit WinRT in eine Metro-App zu portieren.
Die Migration von Silverlight zu XAML UI ist ziemlich einfach und hat gut funktioniert. Die PInvoke-Signaturen und -Attribute wurden mit dem Namespace System.Runtime.InteropServices und dem DLLImport-Attribut gut erkannt.
Das Problem ist, dass wenn ich die App und rufen Sie eine beliebige Methode aus der PInvoked native DLL, die in meinem SL5 app (das funktioniert gut auch auf Windows8) verwendet, habe ich diese Ausnahme:
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:
Meine Frage ist also, was ist das Problem bei diesem PInvoke? Da es gut auf Windows8 mit einem SL5 app funktioniert, sehe ich keine Gründe, Probleme mit WinRT/Metro Apps zu haben.