2012-01-31 6 views
3

J'essaye de construire un jeu pour iOS avec XNA et Farseer Physics 3.3, en utilisant ExEn et MonoTouch. En théorie, cela devrait fonctionner, mais j'ai du mal à faire fonctionner Farseer sur l'iPhone.Comment utiliser Farseer avec une application MonoTouch/ExEn?

J'ai compilé Farseer pour MonoTouch/ExEn, et il fonctionne très bien dans le simulateur de l'iPhone. Mais dès que je passe à l'iPhone, mon projet ne se compile plus. Le problème semble se produire avec l'éditeur de liens MonoDevelop. Le compilateur bombarde avec le message "mtouch quitté avec le code 1", et j'obtiens la sortie suivante d'erreur d'éditeur de liens: http://pastebin.com/y62ykJP2. Si je désactive la liaison dans les options du projet, l'application se compile et se déploie sur l'iPhone, mais tombe en panne.

Si je commente tout le code qui instancie les objets définis par Farseer, je n'obtiens aucune erreur de l'éditeur de liens et le programme se déploie et s'exécute correctement. Donc, le problème est clairement avec ma construction de Farseer pour MonoTouch.

Malheureusement, je n'ai aucune idée d'où aller à partir d'ici. Où devrais-je commencer à regarder avec une erreur de lien comme ceci? Ou, encore mieux: quelqu'un a-t-il réussi à compiler Farseer 3.3 et l'a-t-il utilisé avec MonoTouch et ExEn?

Répondre

2

Vous essayez d'utiliser un assembly compilé pour .NET 4.0 dans MonoTouch. Cela ne fonctionnera pas (l'exception de l'éditeur de liens que vous obtenez est parce que l'assembly fait référence à une méthode qui n'existe pas dans MonoTouch).

La solution consiste à compiler tous les assemblages auxquels vous faites référence en utilisant MonoTouch. Regardez autour de vous pour voir si quelqu'un a déjà créé un projet MonoTouch pour Farseer, sinon vous devrez en créer un vous-même.

+0

Intéressant. Merci pour votre réponse! Pouvez-vous me diriger dans la bonne direction sur la façon de compiler correctement un assemblage en utilisant MonoTouch? Voici la chose: je * l'ai * compilé avec MonoTouch. J'ai créé un nouveau projet de bibliothèque de classes Mono C# vide dans MonoDevelop, copié tous les fichiers source de Farseer, ajouté (ce que je pensais être) des références appropriées à MonoTouch, et l'ai construit. Et c'est la DLL que j'inclus dans mon application MonoTouch, c'est pourquoi cela fonctionne avec "iPhoneSimulator" dans MonoDevelop. Est-ce que je manque quelque chose? – Michael

+0

@Michael: vous ne devriez pas recevoir cette exception si toutes vos références sont compilées avec MonoTouch. Dans ce cas, je recommande de déposer un bug sur http://bugzilla.xamarin.com avec un cas de test complet (vous pouvez attacher votre projet entier et marquer le bug comme privé, de cette manière personne d'autre que les employés de Xamarin n'aura accès à votre projet) . –

+1

Vous aviez parfaitement raison! Il s'avère que le projet que j'ai créé dans MonoDevelop pour compiler l'assembly Farseer était une bibliothèque de classe "Mono C#" au lieu d'une bibliothèque de classe "MonoTouch pour iPhone". Quelle différence font quelques petits mots! La création d'un nouveau projet de bibliothèque de classes pour "MonoTouch pour iPhone" a tout arrangé. L'assembly Farseer se charge maintenant correctement. Je vous remercie! – Michael

Questions connexes