2017-10-19 34 views
2

Je tente de marcher à travers ce guide:Problème de liaison bibliothèque Objective-C à C# avec objectif Sharpie

https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/walkthrough/

essayant de créer des liaisons pour ce projet github:

https://github.com/lminhtm/LMGaugeView

Utilisation de Sharpie 3.4.

Je suis en cours d'exécution dans les questions suivantes:

  1. Je ne peux pas générer un binaire Fat avec les architectures i386 armv7 x86_64 arm64 parce que je suis bâtiment contre iOS11. Je ne peux générer un binaire Fat avec les architectures x86_64 et arm64, en essayant les autres me donne le message d'erreur invalid iOS deployment version, iOS 10 is the max deployment target for 32-bit targets. Est-ce prévu? Lorsque j'utilise Sharpie, je peux générer les fichiers API et Struct. Cependant, chacun de ces fichiers est énorme, avec des Structs se terminant à 24K + lignes, et des lignes API 54K +. J'ai suivi un didacticiel YouTube et la sortie qu'il a eu était d'environ 200 lignes, alors le fait que les miennes soient si énormes me fait penser à quelque chose qui se passe. Son tutoriel n'était pas pour mon même projet Objective-C mais j'ai même essayé le même qu'il a fait et fini avec le même résultat.

  2. Le fichier struct finit par avoir plus de 7K erreurs, et je vois des lignes innombrables qui ont l'air quelque chose comme:

    // extern long double tanhl (long double) __attribute__((const)) __attribute__((nothrow)); 
    [DllImport ("__Internal")] 
    [Verify (PlatformInvoke)] 
    static extern [unsupported Builtin: long double] tanhl ([unsupported Builtin: long double]); 
    

où il manque des noms d'identification et a ce [non pris en charge Builtin: pièce I don ne comprends pas. Il existe également d'innombrables références à d'autres versions d'iOS, à watchOS et à TV, il semble donc que l'on cherche à créer l'API et les Structs pour chaque système d'exploitation et version, ce qui est logique. Voici un petit extrait du fichier struct:

// extern CGPathRef _Nullable CGPathCreateCopyByTransformingPath (CGPathRef _Nullable path, const CGAffineTransform * _Nullable transform) __attribute__((availability(ios, introduced=5.0))) __attribute__((cf_audited_transfer)); 
    [iOS (5,0)] 
    [DllImport ("__Internal")] 
    [Verify (PlatformInvoke)] 
    [return: NullAllowed] 
    static extern unsafe CGPathRef* CGPathCreateCopyByTransformingPath ([NullAllowed] CGPathRef* path, [NullAllowed] CGAffineTransform* transform); 

    // extern CGMutablePathRef _Nullable CGPathCreateMutableCopy (CGPathRef _Nullable path) __attribute__((availability(ios, introduced=2.0))) __attribute__((cf_audited_transfer)); 
    [iOS (2,0)] 
    [DllImport ("__Internal")] 
    [Verify (PlatformInvoke)] 
    [return: NullAllowed] 
    static extern unsafe CGMutablePathRef* CGPathCreateMutableCopy ([NullAllowed] CGPathRef* path); 

    // extern CGMutablePathRef _Nullable CGPathCreateMutableCopyByTransformingPath (CGPathRef _Nullable path, const CGAffineTransform * _Nullable transform) __attribute__((availability(ios, introduced=5.0))) __attribute__((cf_audited_transfer)); 
    [iOS (5,0)] 
    [DllImport ("__Internal")] 
    [Verify (PlatformInvoke)] 
    [return: NullAllowed] 
    static extern unsafe CGMutablePathRef* CGPathCreateMutableCopyByTransformingPath ([NullAllowed] CGPathRef* path, [NullAllowed] CGAffineTransform* transform); 

Je sais que ces fichiers doivent être beaucoup plus petite, d'autant plus que le code Objective-C est un fichier d'en-tête. Que pourrais-je faire mal ici?

Je peux fournir plus de détails si nécessaire!

+1

Avez-vous installé la dernière version de XCode (9) et Sharpie? Je veux aider, avoir une certaine expérience avec les liaisons iOS –

+1

J'ai rapidement vérifié le pod que vous avez mentionné. Il s'avère que, pour cela, vous devez avoir les dernières XCode et Sharpie (3.4 est la version actuelle). Vous pouvez mettre à jour sharpie en exécutant 'sharpie update'. Ensuite, vous pouvez générer une liaison. J'ai essayé et il semble fonctionner très bien, voyez-vous: https://www.youtube.com/watch?v=g7qQJnMxubU&feature=youtu.be L'outil que j'ai utilisé dans la vidéo est un emballage pour sharpie que j'utilise pour Xamarin Liaisons .iOS –

+1

@AlexSorokoletov Je ne peux même pas commencer à exprimer ma gratitude pour vous répondre. J'utilise votre outil et il a fonctionné si parfaitement qu'il a apporté une larme à mes yeux haha! S'il y a un endroit où je pourrais faire un don, faites le moi savoir, et si vous ajoutez ceci comme réponse, je l'accepterai définitivement. Un million de fois, MERCI !! – sbonkosky

Répondre

1

J'ai rapidement vérifié le pod LMGaugeView que vous avez mentionné.

Il s'avère que vous devez avoir XCode et Sharpie (3.4 est la version actuelle).

Vous pouvez mettre à jour Sharpie en exécutant sharpie mise à jour. Ensuite, vous pouvez générer une liaison.

Je l'ai essayé et il semble fonctionner très bien, voyez-vous: youtube.com/watch?v=g7qQJnMxubU&feature=youtu.be

Shameless plug - outil je vidéo est une enveloppe pour Sharpie-je utiliser pour les liaisons Xamarin.iOS - objc-automatic.