Herstellen einer Verbindung mit Windows Phone 7 über eine 64-Bit-Anwendung
Ich habe ein 32-Bit-Programm (in C ++ geschrieben), das eine Verbindung zu verschiedenen Geräten herstellen kann, und solange es 32-Bit ist, funktioniert alles einwandfrei. Jetzt muss ich es jedoch als 64-Bit-Programm erstellen, aber dann stieß ich auf einige Probleme mit Windows Phone 7.
Ich habe herausgefunden, dass eine DLL (in C # geschrieben), die ich als 64-Bit-Datei neu erstellt habe, eine Ausnahme in dieser Zeile auslöst:
MultiTargetingConnectivity connectivity = new MultiTargetingConnectivity(CultureInfo.CurrentUICulture.LCID);
Die Ausnahme ist:
An unhandled exception of type 'Microsoft.SmartDevice.Connectivity.DatastoreException' occurred in Microsoft.SmartDevice.Connectivity.dll
Additional information: Retrieving the COM class factory for component with CLSID {349AB2E8-71B6-4069-AD9C-1170849DA64C} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
(Zum Beispiel, wenn ich versuche, @ auszuführedieses Beispielprogramm es funktioniert in 32-Bit aber löst diese Ausnahme in 64-Bit in derselben Zeile aus)
Wenn ich nach dieser CLSID in der Registrierung gesucht habe, habe ich einen Pfad zu "C: \ Programme (x86) \ Gemeinsame Dateien \ Microsoft Shared \ Phone Tools \ CoreCon \ 11.0 \ Bin \ ConMan2.dll" gefunde registriert die DLL mit regsvr32 aber ich bekomme immer noch die gleiche Ausnahme.
AKTUALISIEREN
Da ich möglicherweise eine Problemumgehung erstellen muss, anstatt eine 64-Bit-Version von ConMan2.dll zu finden, veröffentliche ich hier einen Teil meiner aktuellen DLL, wenn mir jemand eine mögliche Problemumgehung anzeigen kann, damit sie sowohl in 32- als auch in 64-Bit-Version funktioniert.
namespace WP7DLL
{
// Interface declaration.
[Guid("11111111-1111-1111-1111-111111111111")]
public interface IWP7DLL
{
int GetStatus();
};
[ClassInterface(ClassInterfaceType.None)]
[Guid("22222222-2222-2222-2222-222222222222")]
public class WP7DLL : IWP7DLL
{
public WP7DLL() { }
public int GetStatus()
{
//Line that gives an exception in 64 bit
MultiTargetingConnectivity connectivity = new MultiTargetingConnectivity(CultureInfo.CurrentUICulture.LCID);
...
...
}
}
}