0

In meinem Visual Studio Xamarin Forms iOS-Projekt, bin ich gegen eine native (C++) Bibliothek, die ich gebaut und mit Visual Studio Cross C++ Platform bereitgestellt. Ich kann eine Verbindung zu einem tatsächlichen Gerät herstellen (über den Mac-Server), aber ich kann es nicht durch den Simulator laufen lassen. Wenn ich mit den gleichen Verbindungseinstellungen baue, schlägt der Build fehl und der Einstiegspunkt kann nicht gefunden werden. Wenn ich mich entscheide, nicht zu verknüpfen, dann ist der Build erfolgreich, aber ich bekomme einen Entrepointnotfundedexeption, wenn ich an dem Punkt arbeite, an dem ich versuche, den nativen Code aufzurufen.Visual Studio Xamarin bildet iOS-Einstiegspunkt nicht gefunden mit Simulator, aber nicht iphone

+0

Gibt es eine Möglichkeit, ein Beispiel hochzuladen? – Paul

+0

Ich bekomme es die Schritte und den Code aus diesem Blog: http://kerry.lothrop.de/cclibraries/ Aber ich bekomme es auch auf komplexere Lösungen, die ich von Grund auf neu geschrieben habe. – PatMac

+0

War diese Lösung hilfreich bei der Untersuchung des Problems? – PatMac

Antwort

0

Ich ging einfach durch die example von Ihrem Kommentar mit seinem Beispielcode here. Ich musste ein paar Dinge tun, um es richtig laufen zu lassen. Mein Problem war auf Xamarin.iOS, aber die gleichen Schritte können für Xamarin.Forms angewendet werden, vorausgesetzt, Sie haben bereits plattformspezifische Integration funktioniert.

Da der Code auf einem physischen Gerät funktioniert, sollten Sie bereits eine Native Static Reference an Ihre .a-Bibliothek haben. Aber der iOS-Simulator läuft auf der x86_64 Architektur (iOS 11 und später does not support i386), während Ihr Gerät wahrscheinlich auf einer Version/Variante von ARM läuft. Es klingt, als ob Ihre Bibliothek nur die Architektur Ihres Geräts unterstützt. Sie können dies überprüfen, indem lipo von Ihrem Mac ausgeführt wird:

% lipo -info /usr/lib/libCLib.iOS.a

auf die SIM-Architektur als auch (siehe this article) zu unterstützen, bauen die C++ Projekt zu den Architekturen Sie unterstützen müssen, kombinieren sie dann, wie so :

lipo -create -output libCLib.iOS.a libCLib.iOS-x8664.a libCLib.iOS-arm64.a

dass der Ausgang .a Datei als neue Native Static Reference Datei in Visual Studio verwenden zurück. Ändern Sie Supported Architectures in Ihren Projekteinstellungen zu x86_64, und das sollte alles sein. Hoffe das hilft jemandem.