2017-06-14 5 views
1

Je travaille sur Xamarin et tente d'installer une application iOS sur mon iPad.Erreur de liaison natif impossible de créer une décompression compacte pour XXX n'utilisant pas d'image standard (MT5209)

Je veux lier une bibliothèque statique Ada. J'ai un fichier libMyLibrary.a + libgnat.a et un code d'en-tête C (MyLibrary.h).

  • Dans Xamarin, j'ai créé un projet de bibliothèque de liaison et ajouté ma bibliothèque.
  • Dans Xamarin, j'ai ajouté le projet ci-dessus comme une référence à mon application iPad.

Pour communiquer avec la bibliothèque je le P/Invoke avec un DllImport(“__Internal”) et un ensemble pour mon lib (donc je n'ai pas des arguments mTouch):

[assembly: LinkWith(“libMyLibrary.a”, SmartLink=true, ForceLoad=true)] 
[assembly: LinkWith(“libgnat.a”, SmartLink=true, ForceLoad=true)] 

Mais quand je le déployer sur l'iPad, j'ai beaucoup d'erreurs de liaison natif:

Native linking error: warning: could not create compact unwind for XXX does not use standard frame (MT5209) 

J'ai essayé d'utiliser les arguments MonoTouch, mais sans succès:

Toutes les idées?


Configuration:

  • iOS 10.3.2
  • Xamarin 6.3
  • cible de déploiement 10,3
+0

J'admirent le problème de la compilation du code C# pour iOS tout en reliant à une lib Ada statique.Et pour la partie la plus utile du commentaire: avez-vous vérifié que la bibliothèque Ada statique est compilée pour l'architecture correcte (c'est-à-dire l'architecture iOS ARM)? Essayez peut-être de le lier à ObjC pour vous assurer qu'il fonctionne. – flyx

+0

Bonjour, la question est légitime, et oui: la bibliothèque Ada est compilée pour la bonne cible et les interfaces lib sont compatibles C, ce que je crois être un choix sûr. En fait, j'ai trouvé une solution pour cela, j'ai besoin de quelques instants pour poster la réponse. – LoneWanderer

Répondre

2

Après avoir lutté autour avec cela pendant quelques jours, nous sommes arrivés avec quelque chose qui fonctionne.

Les directives précises que nous avons donné à MonoTouch sont les suivantes:

-gcc_flags "-L${ProjectDir} -lMyLibrary -lgnat -force_load ${ProjectDir}/libMyLibrary.a -Wl,-no_compact_unwind" 

Notez que:

  • le fichier lib moucheron est mis de côté libMyLibrary.a
  • libMylibrarry est référencé deux fois dans le commande

Et ... voilà!

apprently, je n'ai pas ajouté correctement à la première fois ...