سؤال

لذلك لدي مشروع Visual Studio 2010 يستخدم المكتبات الخارجية ، ومن أجل الحصول على تجميعه بدون LNK2005 ، اضطررت إلى التوفيق مع ترتيب المكتبات في إعدادات الارتباط.

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

ألا توجد طريقة لتجاهل LNK2005 عمومًا وإخبار الرابط ببساطة باستخدام كل ما يواجهه أولاً؟

شكرًا!

// تحرير: فيما يلي بعض أخطاء إخراج المشكلة المعينة. ومع ذلك ، حاولت بالفعل حل ذلك بطرق مختلفة مع كل حل مما يمنحني مشاكل في الارتباطات المختلفة. وبالتالي ، أبحث عن حل عام لتجاهل LNK2005

Error 7 error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 8 error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 9 error LNK2005: _exit already defined in Libcmtd.lib(crt0dat.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 10 error LNK2005: __invalid_parameter already defined in Libcmtd.lib(invarg.obj) ...\msvcprtd.lib(MSVCP100D.dll)

...

Error 37 error LNK1169: one or more multiply defined symbols found

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

المحلول

يمكنك تجربة LINKER-ROPTION /FORCE (إخراج ملف القوة في علامة التبويب Linker General لخصائص المشروع). سيؤدي ذلك إلى إجبار الرابط على إنشاء exe/dll حتى عند حدوث مثل هذه الأخطاء. ولكن ترك لك لمعرفة ما إذا كان هذا exe يعمل على الإطلاق أو حتى بشكل صحيح. بعد كل شيء لا أوصي بهذه الاستراتيجية.

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

نصائح أخرى

لا يجب أن تتجاهل أخطاء الرابط على الإطلاق! يخبرك الرابط بأنه مرتبك بشأن رمز محدد في أماكن متعددة - من أين يجب أن يأخذ التعريف؟ هل تريد حقًا أن تكون تعسفية؟ ماذا عن عندما تقوم بتغيير التعليمات البرمجية الخاصة بك ويقرر الرابط بشكل عشوائي أخذ التعريف الآخر الذي قد يكسر الرمز فجأة؟

بدلاً من محاربة الأداة ، قم بتصحيح الكود الخاص بك بحيث يجمع وروابط دون أخطاء. هذه المقالة MSDN لديه بعض المعلومات حول إصلاحه ، جنبا إلى جنب مع روابط لمزيد من المعلومات.

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