سؤال

أحاول كتابة رسم الخرائط JNA ل LIBFAAD2. تستخدم المكتبة MP4FF لتحليل ملفات MP4. يتم تجميع MP4FF في libmp4ff.lib على ويندوز و libmp4ff.a على لينكس. يبحث JNA فقط عن ملفات .dll / .so. فكيف يمكنني تحميل هذا MP4FF في JNA؟

تعديل

أظن هذه السؤال لديه الجواب. أنا أكره AAC، لقد أمضيت 4 أيام تصحيح وصول الذاكرة غير الصالحة مع FFMPEG، الآن Libfaad يستخدم بعض المكتبات الغريبة. :(

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

المحلول

أعتقد أنك صحيح أن الإجابة في هذه هو مناسب هنا. على أنظمة نوع UNIX، .a الملفات هي نوع خاص من الأرشيف، وعقد مكتبة لا يمكن ربطها قانونيا فقط بتطبيق (يبدو وكأنه .lib الملف هو نفس الشيء على ويندوز). هذا يعني أنه لا توجد وسيلة لتحميل تلك المكتبة في وقت التشغيل، كما ستحتاج إلى مكتبة ديناميكية. لكنني أعلم أن هذا ليس قيود على JNA، فهو قيود عام على كيفية عمل معظم أنظمة التشغيل.

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

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