Verweisen auf C Dlls von Windows 10 Universal App über die CPU-Architekturen hinweg

8

Grundlegende Frage / Zusammenfassung: Ich muss auf eine Binärdatei (DLL) verweisen, die von jemand anderem in C aus einem universellen Win 10-App-Projekt erstellt wurde. Allerdings gibt es eine separate DLL für x86 und Arm. Ich glaube, ich muss auf die DLL (oder zumindest Winmd-Datei) aus dem Projekt verweisen, um es zu implementieren, aber ich kann nur eine Datei nicht beide verweisen. Das bedeutet, dass die App auf der einen oder anderen Plattform (Desktop oder Telefon) fehlschlägt, da die falsche Binärdatei enthalten ist. Auf der Suche nach einer Lösung.

Weitere detaillierte Erklärung;

Ich versuche eine universelle Windows-Anwendung (neuer Windows 10-Stil) zu schreiben. Das bedeutet, dass ich ein einzelnes Projekt habe, um Referenzen zu externen Komponenten hinzuzufügen.

Ich brauche etwas Bildverarbeitungsmaterial, das am besten als Komponente von Drittanbietern gekauft und nicht im eigenen Haus entwickelt wird. Es gibt mehrere SDKs von Drittanbietern, die WinRT unterstützen, aber keine, die speziell UWA unterstützen. Die WinRT SDKs haben jedoch alle unterschiedliche Binärdateien für Windows Phone und Windows Desktop Apps. und die Binärdateien werden alle aus C / C ++ - Quellen erstellt. Dies war mit den älteren 'universellen' Apps in Ordnung, da es ein separates Projekt für Telefon und Desktop gab, so dass Sie einfach auf verschiedene Komponenten in jedem Projekt verweisen konnten, aber jetzt gibt es nur ein Projekt, zu dem Referenzen hinzugefügt werden können.

Ich fragte einen Lieferanten nach UWA-Unterstützung und behauptete, es sei unmöglich, sie könnten keine einzige Binärdatei erstellen, um beide Plattformen anzusprechen (arm vs. x86) und sie hätten keine Möglichkeit für meine UWA, die richtige Datei zu referenzieren wenn die App für die entsprechende Architektur gebaut wird (was ich annehme, sollte passieren).

Ich nehme an es gibt eine Möglichkeit (vielleicht in einer winmd-Datei?) zu sagen, "hey, hier sind zwei Kopien der gleichen DLL für verschiedene CPU-Architekturen, wählen Sie die, für die Sie bauen" Und solange die öffentliche API der App entspricht, verwendet sie nur die richtige?

Gibt es dafür eine Lösung? Weiß jemand, wie diese Art von Referenz funktionieren soll? Oder habe ich nur Pech?

Danke.

    
Yort 22.06.2015, 01:28
quelle

1 Antwort

7

Es gibt eine Möglichkeit, dieselbe DLL mit verschiedenen Architekturen in einem Projekt zu referenzieren, aber Sie können es nicht direkt von VS aus tun. Sie müssen die csproj-Datei manuell bearbeiten.

In Ihrer csproj-Datei müssen Sie nach unten gehen und die Abschnitte finden. Diese Abschnitte verweisen auf alle Ihre Dateien.

In der Projektdefinition gibt es ein spezielles Tag, mit dem Sie Visual Studio anweisen können, bestimmte Aktionen basierend auf bestimmten Bedingungen auszuführen. Sie können dann eine Gruppe erstellen, die auf Ihre DLL-Abhängigkeiten verweist. Ihre csproj-Datei wird dann wie folgt aussehen: (Ich habe alle nicht relevanten Dinge entfernt)

%Vor%

Ich habe es auf VS2013 für einige Windows Phone-Projekte verwendet (damit sie sowohl auf dem Telefon als auch auf dem Emulator funktionieren). Ich habe nicht auf Windows 10 und VS2015 getestet, aber es sollte genauso funktionieren.

    
Vincent 22.06.2015, 11:49
quelle