8 Stimmen

PInvoke in Metro-Anwendungen mit Windows 8 / WinRT

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X