Visual Studio .NET 2003 - تجاهل مكتبة محددة لـ libcmt vs libcmtd

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

  •  30-09-2019
  •  | 
  •  

سؤال

لديّ مشروع قالب مقابل .NET 2003 ، والذي ينسخ الزملاء وتخصيصهم عند تطوير برامجهم.

يبدو أن القالب قد تم تغييره لفترة من الوقت لتعيين خاصية الجهل الجاهلة ليحصل على libcmt.lib لكل من التصميم والتصحيح (أي لكل من الإصدار والتصحيح ، يجب أن يتجاهل البناء libcmt.lib في الرابط).

تم بناء بعض المشاريع التي تستند إلى ذلك منذ ذلك الحين ، مع سحب إصدار الإصدار في libcmtd.lib (واضح من خلال النظر في ملف .map Project) الذي يبدو أنه تسبب تم تعيينه).

هل إعداد agnoreSpecificLibrary لاستبعاد libcmt.lib جعل رابط المشروع تلقائيًا مقابل libcmtd.lib؟

ما هو غريب هو أن بناء القالب (مع الإعداد غير الصحيح) روابط ضد libcmt.lib في حين أن بعض المشاريع المخصصة (وإن لم يكن كل) رابط ضد libcmtd.lib.

أيه أفكار؟

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

المحلول

هذا ما حدث:

بعد تجميع الرابط ، يأخذ الرابط ملفات الكائن الخاصة بك وإنشاء من بين أمور أخرى جدول رمز ، والذي يحتوي على طلب symol الذي لم يتم ملءه. ثم يمر الرابط من خلال قائمة المكتبات التي تحاول حل تلك الرموز غير المليئة. نظرًا لأنك تتجاهل libcmt.lib ، فقد تركت مكتبة الطرف الثالث أو تضيف بعض الرموز التي لم يتم حلها ، وهي تحتوي على طلب رابط لحل تلك من licmtd.lib (وربما libs الأخرى أيضًا) ، لأنه تم تجميعه مع خيار Debug.

إذا لم تكن قد تجاهلت libcmt.lib ، فمن المرجح أن يتم حل هذه الرموز بواسطة libcmt.lib ولم تكن هناك حاجة لسحب أشياء من libcmtd.lib (على الرغم من أنه سيتم النظر في حل الرموز الأخرى التي كانت لا تزال غير مقلوبة)

يمكنك محاولة ايغور libcmtd.lib أيضا. إذا حصلت الآن على عوامل خارجية غير متوفرة ، فليس من الجيد تجاهل libcmt.dll.

نصائح أخرى

تتجاهل العديد من المشاريع libcmt.lib ، لأنها تتعارض مع الإصدار الديناميكي msvcrt.lib. تجاهل libcmt في الرابط جعل ترجمة المشروع مع msvcrt.lib

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