سؤال

أنا أكتب التطبيق الرسومية باستخدام الهدف-C على الواجهة الأمامية و C++ من أجل معالجة الرسومات و شبكة الاتصالات.قرأت حول على موقع أبل تبحث عن وسيلة لربط إما .dylib أو .لذلك مع رمز C++ في هذا المشروع كسكودي, ولكن لا يبدو أن العمل.وكنت قادرا على الحصول على مشروع المرجعية و رابط ضد ذلك ، ولكن عندما حاولت استدعاء وظائف من ذلك .dylib كان يقول أنه لم أكن أعرف ما كنت أحاول القيام به.لا أحد يعرف ما الذي يجري هنا ؟

وأنا أعلم أن الهدف-C لديه كل المكتبات اريد عمل الرسومات و الشبكات, ولكن أنا فقط أشعر بأن تفعل ذلك من هذا القبيل.أنا لم تكن قد فعلت الكثير من C++ في حين كنت تريد أن تتعلم أكثر موضوعية-C, إذن ما هي أفضل طريقة لاستخدامها معا ؟

شكرا روبي

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

المحلول

وأنت تسير لتصل إلى عقبة واحدة في شكل ما يسمى "اسم من الضغط".C++ مخازن أسماء الوظائف بطريقة غير متوافق مع الكائنات-C.

الهدف-C لا تنفذ الطبقات بنفس الطريقة مثل C++, حتى انها لن ترغب في ذلك.

طريقة واحدة للتغلب على هذا هو تنفيذ مجموعة من بسيطة C الوظائف التي تتصل C++ وظائف.سيكون تحديا جيدا للحفاظ على عدد من وظائف C منخفضة قدر الإمكان!عليك في نهاية المطاف مع لطيفة واجهة المدمجة!:)

أن تعلن هذه الوظائف في C++ الملف, سوف تحتاج إلى وضع علامة عليها كما ج مع:

extern "C" int function_name(char *blob,int number, double foo) {...}

يؤدي هذا إلى تعطيل القياسية الاسم-تغيير اسم.

بناء ملف الرأس مع نماذج لجميع هذه المهام التي يمكنك مشاركتها مع الهدف الخاص بك التعليمات البرمجية C.

أنت لن تكون قادرة على تمرير فصول حول في نفس الطريق (لأن ObjC رمز لا يمكن استخدامها), ولكن سوف تكون قادرة على تمرير المؤشرات (على الرغم من أنك قد تضطر إلى الكذب بشأن أنواع قليلا).

نصائح أخرى

معظم المشاريع التي أعمل عليها يكون ObjC الواجهة و C++ الخلفية.إذا كنت تتعامل حصرا مع المهام ، ثم ديف مقامرة اسم فسد الإصلاح هو الصحيح ، ولكن إذا كنت تتعامل مع حالات أكثر تعقيدا ، حيث تحتاج إلى التعامل مع كل ObjC و C++ الكائنات ، وأفضل رهان هو التفاف C++ الكائنات في ObjC الكائنات.باستخدام مبهمة المراجع (وهو يتوهم جدا طريقة void*), يمكنك فعلا اليد حول C++ الكائنات في ObjC والعكس بالعكس.لدي بعض نموذج التعليمات البرمجية التي قد تكون مفيدة.

وقال الرسومات ربما كنت سوف تأخذ خطيرة الأداء ضرب به العرف C++ بدلا من استخدام صورة الأساسية و الأطر ذات الصلة.الصورة الأساسية وغيرها من الرسومات الأطر الأمثل للغاية ماك و أنت من المستبعد جدا أن نفعل ما هو أفضل مع المدرفلة على يد C++ (أو حتى جيد جدا-كتابة C++ ليست خصيصا لنظام التشغيل Mac).كما يمكنك الانتقال إلى 10.6 grand central dispatch, أداء الفرق سوف تكون ملحوظة أكثر لأنك سوف تخسر كل الموازاة التطورات التي ستحصل مجانا على خلاف ذلك.هذا لا علاقة له مع ObjC;الصورة الأساسية هو C.يمكنك الاتصال من C++ كل ما تريد.أنا فقط أنصح ضد العرف معالجة الرسومات على ماك في أي لغة إلا إذا كنت تحتاج إلى قابلية أو لديك الخبرة اللازمة للتغلب على الصورة الأساسية.

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