• 0
ahmed_fa

كيف نجعل البرنامج يعمل بدون طلب أى ملفات ربط أثناء التشغيل

سؤال

السلام عليكم

لدى سؤال أتمنى الرد علية

عندما قمت بعمل برنامج بسيط سواء Console أو win32 وعند نقلة إلى نظام تشغيل أخر أو جهاز أخر يعطينى رسالة أن لابد من وجود ملف كذا وكذا لكى يعمل البرنامج .

مثال 1 :-

قمت بعمل برنامج console بسيط وعند تشغيلة على ويندوز أخر طلب منى ملفات (msvcp100d.dll, msvcr100d.dll) لكى يعمل البرنامج

مثال 2 :-

قمت بعمل برنامج بسيط أيضا يستخدم مكتبة Boost وعند عمل ترجمة للبرنامج أعطانى رسالة خطأ ( error LNK1104: cannot open file 'libboost_filesystem-vc100mt-sgd-1_47.lib )

سؤالى هو :-

كيف يمكن تشغيل البرنامج سواء Console أو win32 أو حتى MFC على أى جهاز أو ويندوز بدون ما يطلب أى ملف ربط أو حتى ملف مكتبات أو غير ذلك

أنا عاوزة يشتغل على طول على أى جهاز مدمج معاة ملفات المكتبات وملفات الربط

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

5 إجابة على هذا السؤال .

  • 0

بالنسبه للمثال الأول انت قمت بإستخدام نسخه debug من مكتبة الـ runtime الخاصه بـ visual cpp و هي غير موجوده على الأجهزه بشكل افتراضي حيث النسخه المتاحه هى نسخة الـ release فإذا قمت بتحويل المشروع الخاصه بك للنسخه الـ release و سيعمل دون مشاكل.

بالنسبه للمثال الثاني انت تسخدم نسخة compiled من مكتبة boost file system لهذا تحتاج تحديد للـ linker إسم الملف الذى يحتوى على الكود التنفيذي أو يشير إليه و هو فى هذه الحاله libboost_filesystem-vc100mt-sgd-1_47.lib و ذلك حتى يتم إنشاء الملف التنفيذى الخاص بك بنجاح.

إجابة سؤالك: لا بمكنك فعل هذا.

و الله ولي التوفيق

تم تعديل بواسطه محمد علاء الدين
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عزيزي بالنسبة للسؤال الأول, قام أخي محمد بالإجابة عليه.

بالنسبة للثاني, فهذا الخطأ ناتج عن عدم معرفة المترجم أين يجد الـ static lib الخاصة بـ boost::file_system. تأكد من أنك أعددت Boost بطريقة صحيحة, و لا تنسى ترجمة برنامجك كـ release كما قال محمد, لكي تستطيع توزيعه دون الحاجة للمكتبات التي توفر خصائص التنقيح.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اشكركم إخوانى الاعزاء الاخ ( محمد علاء الدين والاخ Khaled.Alshaya ) على ردودكم .

بالنسبة للسؤال الاول + مرتبط بالمكتبة أيضا :

أنا قمت بأستخدام release لكن عند التحويل إليها وجدت المترجم يظهر لى رسائل خطأ

error C1083: Cannot open include file: 'boost\filesystem.hpp': No such file or directory

IntelliSense: name must be a namespace name

IntelliSense: name followed by '::' must be a class or namespace name

مع العلم بأن عند أسترجاعها إلى debug تختفى هذة الرسائل ويعمل البرنامج بدون مشكلة

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

تم تعديل بواسطه حبيب الله
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
مع العلم بأن عند أسترجاعها إلى debug تختفى هذة الرسائل ويعمل البرنامج بدون مشكلة

عزيزي, يجب عليك تكرار الإعدادات لنسخة الـ debug كما وضحت في الموضوع, من ثم قم باختيار release و اختيار نفس الإعدادات في وضع release. نفس الخطوات بالضبط, و ستقوم boost باختيار المكتبة الستاتيكية المناسبة تلقائياً. و تأكد أنك اتبعت الخطوات التي شرحتها في الموضوع لكي يتم بناء Boost بشكل كامل.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جزاك الله كل خير أخى Khaled.Alshaya

أنا قمت بربط المكتبة عندما كنت على الوضع debug ولم أكن أعلم بأنة عند التحويل إلى الوضع release لابد أن أقوم بربط المكتبة مرة أخرى .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .