سؤال

أود أن أعرف ما إذا كانت هناك طريقة لمزج كود C# وObj-C في مشروع واحد.على وجه التحديد، أرغب في استخدام Cocos2D لواجهة المستخدم الخاصة بي في Obj-C واستدعاء بعض MonoTouch C#-Library التي تقوم ببعض العمليات الحسابية وتستعيد بعض القيم.هل هناك طريقة للقيام بذلك؟أو ربما العكس، أي.ه.البناء في MonoTouch واستدعاء وظائف Cocos2D؟شكرًا.

هل كانت مفيدة؟

المحلول

الإعداد الذي تصفه هو ممكن، ولكن خط الأنابيب ليس سلسا كما هو الحال عند القيام بمشروعك بالكامل في Monotouch. هذا هو في الواقع كيف تمثيقنا بعجلات Monotouch: أخذنا نماذج موضوعية موجودة وبعد ذلك استبدال BITS واحدا تلو الآخر مع التعليمات البرمجية المدارة.

أسقطنا تلك العينات لأنها bitrot.

ولكن لا يزال بإمكانك الحصول على هذا، استخدم خيار سطر الأوامر - xcode Mtouch's لإنشاء برنامج نموذجي لك، ثم انسخ البتات التي تريدها من القالب الذي تم إنشاؤه. قم بتخصيص المكونات التي تريدها، وبدء تشغيل مشروع Xcode من هناك.

أثناء دورة التطوير الخاصة بك، ستستمر في استخدام MTouch - xcode

نصائح أخرى

إعادة: غير معروف (جوجل):

لقد فعلنا ذلك بالفعل كما هو موضح.

راجع هذه الصفحة لبدء سريع، ولكن مقطع التعليمات البرمجية الأخير في تلك الصفحة مخطئ، لأنه يحذف "- -xcode" -Parameter.http://monotouch.net/documentation/xcode.

ما عليك القيام به لتضمين برنامج Mono-Exe / DLL الخاص بك في برنامج موضوعي - C هو ترجمة المصدر الخاص بك مع SharpDeveld، ثم قم بتشغيل MTouch مع هذه المعلمات:

/Developer/MonoTouch/usr/bin/mtouch --linksdkonly --xcode=output_dir MyMonoAssembly.exe

هذا يعمل فقط مع النسخة الكاملة من monotouch. لا تسمح المحاكمة باستخدام "- -xcode" -Argument. هناك حاجة إلى "- linksdkonly" -Argument إذا كنت تريد MTOUCH لإبقاء الفصول غير المشروعة في الإخراج المترجمة، وإلا فإنها شرائط رمز غير مستخدمة.

ثم تقوم Mtouch بتجميع تجميعك في كود الذراع الأصلي (امتداد الملف .s) ويولد أيضا قالب XCODE الذي يقوم بتحميل وقت التشغيل Mono-Runed و Code داخل برنامج Xcode / OBJC. يمكنك الآن استخدام هذا القالب على الفور وتضمين رمز OBJ-C أو استخراج رمز تحميل وقت التشغيل من "Main.m" -file وأدخله في مشروع Xcode الحالي الخاص بك. إذا كنت تستخدم مشروعا موجودا، فسيطلب منك نسخ ملفات .exe / .dll / .s من Dir-Dir-dir التي صنعها mtouch.

الآن لديك وقت تشغيل Mono-Runed والتجمع الذي تم تحميله في مشروع Xcode. للتواصل مع تجميعك، يجب عليك استخدام API-تضمين أحادي (وليس جزءا من Monotouch، ولكن أحادي). هذه هي مكالمات API نمط C. للحصول على مقدمة جيدة انظر هذه الصفحة.

أيضا وثائق Wono-Embedding-API قد يكون مفيدا.

ما عليك فعله الآن في رمز OBJ-C الخاص بك هو إجراء مكالمات API. قد تنطوي هذه الخطوات على: احصل على مجال التطبيق، واحصل على التجمع، واحصل على صورة التجميع، وتحديد موقع الفئة التي تريد استخدامها، وإنشاء كائن من تلك الفئة، والعثور على طرق في الفصل، طرق الاتصال على الكائن، وسيطات طريقة التغليف في مصفيفات C وتمريرها إلى طريقة المكالمة، واحصل على قيم إرجاع الأسلوب واستخراجها. هناك أمثلة على ذلك على صفحة التضمين API-Doc أعلاه.

عليك فقط أن تكون حذرا مع استهلاك الذاكرة في مكتبتك، حيث يأخذ وقت تشغيل أحادي بعض الذاكرة أيضا.

لذلك هذه هي الطريق من OBJ-C إلى C #. إذا كنت ترغب في إجراء مكالمات من C # / Mono إلى برنامج OBJ-C الخاص بك، فعليك استخدام الارتباطات Monotouch، والتي يتم وصفها هنا.

يمكنك أيضا استخدام مكالمات أسلوب C النقي من AMBEDDING / P / Invoke-API.

نأمل أن يكون هذا يحصل لكم بدأت.

خلال عطلة نهاية الأسبوع، تبين أن شخصًا ما قام بنقل Cocos2D إلى .NET، لذا يمكنك أيضًا القيام بالعمل بأكمله على .NET:

http://github.com/city41/CocosNet

بدأ Cocos2D كمشروع Python، والذي تم نقله لاحقًا إلى Objective-C، والآن هناك جهد نشط لجلبه إلى C#.لم ينته الأمر بعد، لكن المؤلف يقبل التصحيحات وقد تكون طريقة أفضل للمضي قدمًا.

استدعاء الهدف - C من Monotouch بالتأكيد تبدو ممكنة. انظر أمثلة محدد موضوعي

ما المكتبة التي تتصل بها؟ ربما هناك ما يعادل الهدف C.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top