C ++: الرابط: Debug xxxxx.exe غير موجود أو غير مصمم بواسطة آخر رابط تدريجي ؛ أداء رابط كامل

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

  •  20-09-2019
  •  | 
  •  

سؤال

باستخدام Visual Studio 2008 SP1 ،
هذا الخط:

LINK : debug\XXXXX.exe not found or not built by the last incremental link; performing full link

يظهر في كل مرة أقوم فيها بتجميع المشروع ، بغض النظر عن حجم التغيير الذي أجريه.
ماذا يمكن أن يكون أسباب ذلك؟

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

المحلول 2

لذلك اتضح أن المشكلة تعمل على إصلاحها إذا أضفت /INCREMENTAL إلى سطر الأوامر Linker. هذا على الرغم من حقيقة أن السلوك الافتراضي وفقًا للمستندات هو تمكين الربط التزايدي.

غريب.

نصائح أخرى

السؤال القديم ، ولكن في حالة شخص ما لا يزال مشكلة (وهي ..).

الرابط الإضافي غير متوافق مع إنشاء ملف واضح (ProJ Opts> Linker> ملف واضح> إنشاء بيان: نعم). في الواقع ، فإن توليد البيان يعدل EXE/DLL بحيث يتعين على Linker القيام بالارتباط الكامل.

هناك بعض الحلول ، لمزيد من التفاصيل:http://chadaustin.me/2009/05/incremental-linking-and-embedded-manifests/

حل مؤقت (وأسهل/أسرع) هو تعطيل توليد البيان أثناء التطوير وتمكينه مرة أخرى في مرحلة الإفراج. على الرغم من أن هذا يعطل واجهة المستخدم الرسومية على غرار XP/Vista للتطبيق (تبدو عناصر التحكم في "الوضع الكلاسيكي").

حقا إطلاق النار في الظلام ولكن ، ...

هل تنقل xxxxx.exe من حيث تم بناؤه إلى مكان آخر؟ الهدف الكامل من الرابط الإضافي هو تغيير EXE موجود. إذا لم يكن هناك شيء ، فسيكون الأمر صعبًا ...

سبب آخر محتمل هو أنه تم تغيير الملف بعد الإنشاء (ربما بواسطة أداة أخرى) ...

جميع الأسباب مدرجة في عنصر المساعدة لـ /تدريجي:

بالإضافة إلى ذلك ، يؤدي Link رابطًا كاملاً في حالة حدوث أي من الحالات التالية:

ملف الحالة الإضافية (.ilk) مفقود. (Link ينشئ ملف .ilk جديد استعدادًا للربط الإضافي اللاحق.)

لا يوجد إذن الكتابة لملف .ilk. (يتجاهل Link ملف .ilk والروابط بشكل غير محدد.)

ملف الإخراج .exe أو .dll مفقود.

يتم تغيير الطابع الزمني لـ .ilk ، .exe ، أو .dll.

تم تغيير خيار الارتباط. معظم خيارات الارتباط ، عند تغييرها بين الإنشاءات ، تسبب رابطًا كاملاً.

يتم إضافة أو حذف ملف كائن (.OBJ).

تم تغيير كائن تم تجميعه باستخدام خيار /yu /Z7.

  1. تحميل بروكمون من Microsoft.
  2. قم بتشغيله ، قم بإعداد مرشح بحيث تبحث عن وصول إلى المسار الذي يحتوي على اسم .exe الخاص بك.
  3. قم بعمل رابط.
  4. تعرف على المتاعب التي تواجهها - هل تجدها ، هل تسجل خطأ عند فتحه. ستقوم Procmon بتسجيل كل ملف مفتوح ، وقراءة ، إغلاق ، وما إلى ذلك. إذا حصل على خطأ ، فسيقوم بتسجيله.
  5. تأكد أيضًا من أنه يمكن العثور على ملف .ilk - أعتقد أنه يحتاج إلى ذلك أيضًا.

(أيضًا في الظلام) أحد الأسباب المحتملة هو استخدام رأس على مستوى المشروع يشير إلى __DATE__ دقيق. ولكن في هذه الحالة ، سترى إعادة ترجمة كاملة أيضًا (هل أنت؟)

في حالتي ، لدي هذا الخطأ أمس.

VS مجموعة code generation > runtime Library إلى Multi-threaded Debug DLL (/MDd) بدلاً من Multi-threaded Debug (/MTd).

إذا قمت بإعادة إنشاء مشروع جديد ، تحدث هذه الإعدادات السيئة مرة أخرى. أتحول يدويًا إلى /Mtd, ، ثم لا يحدث أي خطأ.

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