سؤال

هل من الممكن دول مجلس التعاون الخليجي إلى رابط ضد المكتبة التي تم إنشاؤها بواسطة Visual C++?إذا كان الأمر كذلك ، هل هناك أي تضارب/المشاكل التي قد تنشأ من فعل ذلك ؟

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

المحلول

بعض التعليقات في الإجابات هنا قليلا جدا generalistic.

في حين لا, في حالة محددة ذكر دول مجلس التعاون الخليجي الثنائيات لن الارتباط مع VC++ مكتبة (AFAIK).الفعلية وسائل الربط رمز/مكتبات هو السؤال من أبي القياسية المستخدمة.

شائعة بشكل متزايد القياسية في العالم جزءا لا يتجزأ من هو EABI (أو الذراع أبي) القياسية (على أساس العمل المنجز خلال Itanium التنمية http://www.codesourcery.com/cxx-abi/).إذا المجمعين هي EABI متوافقة مع أنها يمكن أن تنتج الملفات التنفيذية والمكتبات التي سوف تعمل مع بعضها البعض.مثال متعددة toolchains العمل معا هو الذراع RVCT المترجم الذي ينتج الثنائيات التي سوف تعمل مع دول مجلس التعاون الخليجي الذراع أبي الثنائيات.

(رمز sourcery الرابط في الأسفل في هذه اللحظة ولكن يمكن أن يكون جوجل مؤقتا)

نصائح أخرى

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

المعتاد مخططات كمحاولة للتغلب على هذه عادة ما تنطوي على لغة مستقلة تقنيات مثل COM أو كوربا.أبسط قدس طريقة لاستخدام ج "مغلفة" حول رمز C++.

فمن غير الممكن.عادة ليس من الممكن حتى مكتبات الارتباط التي تنتجها إصدارات مختلفة من نفس المترجم.

لا.سهل و بسيط :-)

نعم, إذا كنت تجعل من الارتباط الحيوي وجعل واجهة ج-نمط.lib.exe سوف تولد استيراد المكتبات والتي هي متوافقة مع دول مجلس التعاون الخليجي toolchain.

التي من شأنها حل ربط المشاكل.ولكن هذا هو مجرد بداية المشكلة.

أكبر الخاص بك سوف تكون مشاكل أشياء مثل الاستثناءات ، و تخصيص الذاكرة.

  • يجب التأكد من أن استثناء عرضية من VC++ دول مجلس التعاون الخليجي رمز, لا توجد ضمانات التوافق.
  • كل كائن من VC++ المكتبة سوف تحتاج إلى العيش على كومة لأن:
  • لا تخلط دول مجلس التعاون جديد/حذف أي شيء من VC++, الأشياء السيئة سوف يحدث.وهذا ينطبق على وجوه البناء على المكدس أيضا.ومع ذلك ، إذا كنت جعل واجهة مثل create_some_obj()/delete_some_obj() لا يمكنك في نهاية المطاف باستخدام خليجية جديدة لبناء VC++ الكائنات.ربما تجعل صغيرة معالج الكائن الذي يعالج البناء والتدمير.بهذه الطريقة يمكنك الحفاظ على RAII, ولكن لا يزال استخدام ج-واجهة الحقيقية واجهة.
  • واصفا الاتفاقية يجب أن تكون صحيحة.في VC++ هناك cdecl و stdcall.إن دول مجلس التعاون الخليجي حاولت الاتصال المستوردة وظيفة ما يدعو نوع الأشياء السيئة سوف يحدث.

خلاصة القول هي الحفاظ على واجهة بسيطة التي هي ANSI C المتوافقة و هل يجب أن يكون على ما يرام.حقيقة أن مجنون C++ يدور وراء بخير طالما أنه هو الوارد.

و تأكد من كل شيء هو رمز إعادة الوافد ، أو خطر افتتاح كله نوثر يمكن-o-الديدان.

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