خلط المكتبات ثابت من قانون C بنيت من إصدارات مختلفة من Visual Studio 2002 و في وقت لاحق

StackOverflow https://stackoverflow.com/questions/462768

سؤال

ولدي مكتبة للربط ثابتة من C والروتين فورتران جمعت وربطت معا باستخدام البصرية ستوديو 2002 C (V7.0) مترجم وإنتل فورتران 9.0.018 مترجم.

والرمز C في المكالمات مكتبتي وروابط لمايكروسوفت C-وقت التشغيل (MSCRT) 2002 مكتبات ثابت (ترابط واحد). وأعتقد أن رقم الإصدار الفعلي للمكتبات CRT عام 2002 V7.0

وسأشير إلى مكتبة ثابتة بأنها "vs2002if9.lib"

هل يمكنني ثابت تصل إلى بلادي "vs2002if9.lib" بأمان باستخدام أي إصدار لاحق من Visual Studio (2003، 2005 أو 2008) دون أي قلق حول كيفية سلوك برنامج الاستدعاء بخصوص المكالمات C وقت التشغيل؟

وأو أنا خلق مشاكل عن طريق خلط نسخة من يبس ثابت CRT؟

وماذا لو توفر لي "vs2002if9.lib" ل3RD مطوري الطرف البرمجيات؟ ما هي المتطلبات أنا يفرض عليهم؟

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

المحلول

لم ينجح

وخلط C أوقات التشغيل بالنسبة لي في الماضي. الطريقة الوحيدة التي أستطيع أن أرى هذا العمل {} ربما هو إذا كنت عزل تماما استخدام كومة / كومة داخل حدود ثابت مرتبط C-وقت التشغيل [لا شيء يعبر الحدود عبر المعلمات ولكن بعد ذلك ما قيمة غير vs2009if9 الخاص بك .LIB توفير].

وعلى سبيل المثال، إذا كنت ليتم تخصيص مؤشر [كومة الذاكرة] ضمن التطبيق وتمرير هذا المؤشر إلى المكتبة التي قدمتها، والتي مدير كومة التي يجب استخدامها؟ والجواب الصحيح هو مدير كومة إدارة مؤشر، ولكن مكتبتك لا يعرفون عن مدير كومة أخرى. فإنه يحصل أقبح إذا مكتبتك تخصص الذاكرة للاستخدام من قبل التطبيق وانها مسؤولية التطبيقات مجانا / حذف باستخدام مؤشر المقدمة (تصميم سيء نعم ولكن ممكن لا يزال). مرة أخرى، سيتم استخدام مدير كومة الخطأ.

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