سؤال

لدي مشكلة صغيرة: لا بد لي من فتح ملف رابط يحتوي .a امتداد. أنا استخدم dev-c ++.

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

المحلول

.a الملفات ar المحفوظات (شيء مثل أرشيفات الرمز البريدي) للكائن (.o) الملفات. يمكنك سرد الملفات في .a ملف باستخدام ar برنامج:

ar t file.a

واستخراج جميع الملفات:

ar x file.a

نصائح أخرى

ملفات مع .a الامتداد هي مكتبات ثابتة باستخدام اتفاقيات تسمية ملف UNIX. إنها ليست أكثر من مجرد مجموعة مفهرسة من رمز الكائن. أنت لا تفتحها كثيرًا (إلا إذا كان لديك أداة مثل nm أو gdb متاح ، وكلاهما يستطيع قم بعمل أشياء معقولة مع مكتبة إن لم يكن بالضرورة ما قد تريده) كما أخبر الرابط باستخدامها عند الارتباط. مع معظم الروابط ، من المهم وضع جميع المكتبات (ثابتة وديناميكية/مشتركة) بعد رمز البرنامج الرئيسي الخاص بك على سطر أوامر Linker وترتيب المكتبات مهم أيضًا.

هل تقصد حقًا أنك تريد ذلك افتح الملف ، أو بالأحرى ترغب في ذلك حلقة الوصل مع الكود الخاص بك؟

يتم تثبيت Dev-C ++ افتراضيًا باستخدام برنامج التحويل البرمجي Mingw/GCC. إذا لم يتم تصميم الأرشيف على وجه التحديد للعمل مع Mingw (على سبيل المثال ، فقد يكون أرشيف Cygwin أو Linux) ، فلن تتمكن من ربطه برمز MingW الذي تم إنشاؤه.

إذا كان الأرشيف مكتبة متوافقة مع Mingw/GCC ، فبحين ببساطة ربطه بالرمز الخاص بك. في Dev-C ++ ، تحتاج إلى إضافة أرشيف إلى خيارات رابط المشروع ، إما عن طريق إضافة المسار الكامل إلى الأرشيف (هناك زر لذلك في خيارات المشروع) ، أو عن طريق وضع الأرشيف في مسار محدد بواسطة أ -L<path> الخيار ، ثم إضافة ملف -l<archive> اختيار. لاحظ أن المعرف يسمى الأرشيف libxxx.a ، ثم -l<archive> سيكون الخيار "-lxxx" ؛ بادئة "lib" وتوسيع ".a" ضمني.

إذا كنت ترغب ببساطة في فحص أرشيف لتحديد الرموز الخارجية التي يوفرها ، فإنها نانومتر يمكن استخدام الأداة المساعدة لذلك. إذا كنت ترغب في استخراج ملفات الكائن الفردية ، فاستخدم ملف AR, ، على الرغم من أنني لا أستطيع التفكير في سبب وجيه لأنك تريد القيام به أيضًا.

محاولة fstream, ، أو fstream file_op("c:\\test.a",ios::in);, ولا تنسى أن تضم fstream.h.

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