سؤال

لدي ملف ثنائي - مكتبة ثابتة Windows (*.lib).
هل هناك طريقة بسيطة لمعرفة أسماء الوظائف وواجهةها من تلك المكتبة؟

شيء مشابه ل emfar و elfdump المرافق (على أنظمة Linux)؟

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

المحلول

على افتراض أنك تتحدث عن مكتبة ثابتة ، DUMPBIN /SYMBOLS يعرض الوظائف وكائنات البيانات في المكتبة. إذا كنت تتحدث عن مكتبة استيراد (أ .lib تستخدم للإشارة إلى الرموز التي تم تصديرها من DLL) ، ثم تريد DUMPBIN /EXPORTS.

لاحظ أنه بالنسبة للوظائف المرتبطة بالواجهة الثنائية "C" ، فإن هذا لا يزال لن يحصل على قيم أو معلمات أو اتفاقية الاتصال. هذه المعلومات غير مشفرة في .lib على الاطلاق؛ عليك أن تعرف ذلك في وقت مبكر (عبر النماذج الأولية في ملفات الرأس ، على سبيل المثال) من أجل الاتصال بهم بشكل صحيح.

بالنسبة للوظائف المرتبطة بالواجهة الثنائية C ++ ، يتم ترميز اتفاقية الاتصال والوسائط في الاسم المصدر للوظيفة (تسمى أيضًا "الاسم mangling"). DUMPBIN /SYMBOLS سوف تظهر لكما اسم وظيفة "mangled" وكذلك مجموعة المعلمات التي تم فك تشفيرها.

نصائح أخرى

افتح وحدة تحكم أوامر مرئية (موجه أوامر Visual Studio)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

أو

lib /LIST openssl.x86.lib

أو فقط افتحه مع 7-Zip :) إنه أرشيف AR

أردت أداة مثل ar t libfile.a في يونيكس.
ما يعادل Windows هو lib.exe /list libfile.lib.

lib.exe هو أمين المكتبة لـ VS

http://msdn.microsoft.com/en-us/library/7ykb2k5f(vs.80).aspx

(مثل libtool على UNIX)

"Dumpbin -Experts" يعمل لصالح DLL ، ولكن في بعض الأحيان قد لا تعمل مع LIB. بالنسبة إلى lib ، يمكننا استخدام "Dumpbin -Linkermember" أو فقط "Dumpbin -Linkermember: 1".

Dumpbin /ستحصل الصادرات على معظم هذه المعلومات وسيحصل ضرب MSDN على الباقي.

الحصول على واحدة من حزم الاستوديو المرئية. C ++

1) افتح موجه أوامر مطور لـ VS 2017 (أو أي إصدار لديك على جهازك) (يجب أن يكون موجودًا أسفل: قائمة ابدأ -> جميع البرامج -> Visual Studio 2017 (أو أي إصدار لديك على جهازك) -> أدوات Visual Studio-> موجه أوامر المطور لـ VS 2017.

2) أدخل الأمر التالي:

dumpbin /EXPORTS my_lib_name.lib

كما يمكن رؤيته في إجابات أخرى ، يجب عليك فتح موجه أوامر المطور المقدمة في إصدار Visual Studio dumpbin.exe في مسار التنفيذ الخاص بك. خلاف ذلك ، يمكنك تعيين متغيرات البيئة اللازمة باليد.

dumpbin /EXPORTS yourlibrary.lib عادة ما تظهر مجرد قائمة صغيرة من الرموز. في كثير من الحالات ، لن يُظهر الوظائف التي تصدرها المكتبة.

dumpbin /SYMBOLS /EXPORTS yourlibrary.lib سيظهر أن الرموز ، ولكن أيضا كمية ضخمة بشكل لا يصدق من التعايش الأخرى. لذلك ، عليك تصفيةهم ، ربما مع أنبوب إلى findstr (إذا كنت تريد أداة MS-Windows) ، أو grep.

البحث Static يبدو أن الكلمة الرئيسية باستخدام إحدى هذه الأدوات تلميح جيد.

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