I have an simple FM Radio Tuner App in Silverlight 5 Out-of-browser that calls code from a Native C++ DLL from my USB FM Receiver using PInvoke. This application works very fine in Windows 8 with Silverlight5.
Now I'm trying to port it to a Metro App using WinRT.
The migration from Silverlight to XAML UI is pretty easy and worked well. The PInvoke signatures and attributes was detected fine with the namespace System.Runtime.InteropServices and the DLLImport attribute.
The problem is that when I'm running the App and call any method from the PInvoked native DLL that used to work in my SL5 app(that works fine even on Windows8), I have this exception:
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:
So, my question is, what is the problem on this PInvoke? Since it Works well on Windows8 with a SL5 app, I dont see any reasons to have problems with WinRT/Metro Apps.