كيف تقوم بتعبئة مشروع Visual Studio C++ للإصدار؟

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

  •  08-06-2019
  •  | 
  •  

سؤال

أتساءل عن كيفية إنشاء إصدار يتضمن جميع ملفات dll الضرورية في ملف exe. بحيث يمكن تشغيل البرنامج على جهاز غير مطور دون الحاجة إلى تثبيت Microsoft القابل لإعادة التوزيع على الجهاز المستهدف.

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

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

المحلول

  1. اختر المشروع -> الخصائص
  2. حدد التكوين -> عام
  3. في المربع الخاص بكيفية ربط MFC، اختر ربطه بشكل ثابت.
  4. اختر الرابط -> الإدخال.تحت التبعيات الإضافية, ، أضف أي مكتبات تحتاج إلى ربط تطبيقك بها بشكل ثابت.

نصائح أخرى

تحتاج إلى تعيين مكتبة وقت التشغيل (تحت C/C++ -> إنشاء التعليمات البرمجية) لجميع المشاريع على الارتباط الثابت، والذي يرتبط بتكوينات البناء الافتراضية التالية:

  • تصحيح/إصدار متعدد الخيوط
  • التصحيح/الإصدار ذو الخيوط المفردة

على عكس إصدارات "DLL" من تلك المكتبات.

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

انتبه أن لا تنصح Microsoft بربط وقت التشغيل بشكل ثابت بمشروعك, ، لأن هذا يمنع خدمته بواسطة Windows Update لإصلاح الأخطاء الأمنية الحرجة.هناك أيضًا مشكلات محتملة إذا كنت تقوم بتمرير الذاكرة بين ملفات .exe و.dll الرئيسية الخاصة بك كما لو كان كل من هذه الروابط الثابتة وقت التشغيل يمكن أن ينتهي بك الأمر إلى مشاكل عدم تطابق malloc/free.

يمكنك تضمين ملفات DLL مع الملف القابل للتنفيذ، دون تجميعها في ملف exe. ودون تشغيل أداة redist - وهذا ما أفعله ويبدو أنه يعمل بشكل جيد.

المشكلة الوحيدة هي أنك تحتاج إلى تضمين الملفات مرتين إذا كنت تقوم بالتوزيع لمجموعة واسعة من إصدارات Windows - تحتاج أنظمة التشغيل الأحدث إلى الملفات الموجودة في الدلائل المحددة بالبيان، وتريد أنظمة التشغيل الأقدم جميع الملفات الموجودة في دليل البرنامج .

ستتطلع إلى رابط ثابت (بدلاً من الارتباط الديناميكي)

لست متأكدًا من عدد عناصر MS القابلة لإعادة التوزيع التي ترتبط بشكل ثابت.

إذا كنت تتطلع إلى معرفة ملف dll الذي يفتقده جهازك المستهدف، فاستخدم Depends.exe الذي كان يأتي مع MSDev، ولكن يمكن العثور عليه أيضًا هنا.من المفترض أن يخبرك اختبار ذلك على عدد قليل من الأجهزة المستهدفة بملفات dll التي تحتاج إلى حزمها مع تطبيقك.

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