2011-01-13 6 views
0

Ich habe eine Anwendung geschrieben in C++ und MFC (VS 2008 SP1), die auf Windows Mobile 6.1 ausgeführt wird. Jetzt muss ich Funktionalitäten in diese Anwendung integrieren, die nur durch eine .NET-Bibliothek von einem Drittanbieter verfügbar ist.COM Interop auf Windows Mobile 6

Meine Idee war, meine eigene Wrapper/Fassade .NET-Assembly, um diese NET-Bibliothek zu erstellen, die die Funktionen aussetzt ich für mein Projekt benötigen und diese Anordnung COM-sichtbar für mein C++/MFC-Projekt zu machen.

Beim Einrichten eines Projekts in VS 2008 für diese Wrapper-Bibliothek (C#, "Smart Device" -Projekttyp, Typ "Klassenbibliothek", Ziel Framework .NET 2.0 (oder 3.5), Zielplattform "Windows Mobile 6 Professional SDK ") Ich habe bemerkt, dass die Optionen in den Projekteigenschaften die Baugruppe COM-sichtbar und für COM-Interop sind deaktiviert (in den Dialogmasken in VS ausgegraut) zu machen.

Fragen (Wenn ich eine "normale" (nicht für Smart Device) Klassenbibliotheksprojekt für framework 2.0 die Optionen stehen zur Verfügung erstellen.):

  • 1) Ist COM-Interop unterstützt auf Windows Mobile überhaupt?
  • 2) Wenn ja, ist diese spezielle Richtung von COM-Interop Ich brauche (machen .NET-Assemblys COM-sichtbar für native Anwendungen) auf Windows Mobile unterstützt?
  • 3) Wenn ja, mache ich etwas falsch, indem ich das Projekt aufstelle?
  • 4) Verfüge ich über andere Optionen, um das im ersten Absatz beschriebene Problem zu lösen?

Vielen Dank für Hilfe im Voraus!

+0

Nicht so sicher, was hier vor sich geht, das Attribut [ComVisible] wird auf CF unterstützt. Das 'Registrieren für COM-Interop' ist deaktiviert, macht sehr viel Sinn, es muss auf dem Gerät gemacht werden, nicht auf Ihrem Dev-Rechner. Überprüfen Sie, ob CF das erforderliche Tool Regasm.exe enthält. –

+0

Ja, ich habe auf MSDN gesehen, dass [ComVisible] unterstützt wird. Ich kann auch ComVisible in AssemblyInfo.cs in meinem Projekt auf true setzen (und kompilieren, ohne Fehler zu bekommen). Das ist verwirrend. Dieser Artikel (http://msdn.microsoft.com/en-us/library/kfzsfkz3%28v=VS.90%29.aspx) besagt: "Verwenden eines Assembly-Registrierungstools wie Regasm.exe für COM-Clients zu Verwende eine verwaltete Komponente als eine COM-Klasse [wird nicht in CF unterstützt] "- unter anderen nicht unterstützten Funktionen und bestätige schließlich die Antwort von ctacke unten. – Slauma

Antwort

1

Sie können in der CF kein verwaltetes COM-Objekt erstellen, da Hosting nicht unterstützt wird.

Die einzige Möglichkeit, verwalteten Code von nativ aufzurufen (abgesehen von Callbacks usw., die von der verwalteten Seite initiiert werden) besteht darin, eine separate verwaltete ausführbare Datei in einem eigenen Prozess zu erstellen und IPC zu verwenden.

+0

Danke für die klare Antwort! Ich habe auch Ihre Antwort auf eine andere Frage hier gefunden: http://stackoverflow.com/questions/200225/easy-ipc-on-windows-mobile. Daher ist es überflüssig, nach Hinweisen zu fragen, welche Art von IPC empfohlen wird. Danke noch einmal! – Slauma