سؤال

سؤال: هل من الممكن تجميع برنامج على Linux باستخدام ملف .dll؟

إلى أين يسير هذا:سيتم استخدام هذا .dll لكتابة امتداد PHP لبعض البرامج الملكية من طرف ثالث.

الخلفية والبحث:

لقد تلقيت مكتبة تسمى proprietary.lib. كنت فضوليًا ، لأنني لم أر قط .lib التمديد من قبل ، لذلك كتبت:

file proprietary.lib

كان الإخراج:

proprietary.lib:  current ar archive

قمت ببعض الأبحاث ووجدت ذلك ar هو تقريبا tar (وفي الواقع ، أعتقد tar وقد استبدل منذ ذلك الحين ar في معظم بيئات *nix).

عند فحص ar manpage ، رأيت t option, ، والذي يعرض قائمة جدول لمحتويات هذا الأرشيف. رائع. لذلك أنا أكتب:

ar t proprietary.lib

واحصل على:

proprietary.dll
proprietary.dll
... (snip X lines) ...
هل كانت مفيدة؟

المحلول

يمكنك محاولة استخراج ar ملف (حزم دبيان ar الملفات ، FWIW) وتشغيلها file على المحتويات.

لن تكون قادرًا على استخدام Windows DLLs بدون ترجمة. يتم تجميع ملفات DLL الوحيدة التي أعرفها عن هذا العمل أصلاً على Linux باستخدام Mono.

إذا أعطاك شخص ما مكتبة ثنائية الملكية لترميزها ، فيجب عليك التحقق من تجميعها للهندسة المعمارية المستهدفة (لا شيء مثل محاولة استخدام AM Arm Binary على نظام x86) وأنه يتم تجميعه لـ Linux.

هذا يقال ... حظا سعيدا. أكره البرمجة ضد مكتبات الطرف الثالث حيث لدي الوثائق و المصدر.

نصائح أخرى

قد يكون التطور الأخير قد غير الموقف: هناك أ مكتبة التحميل وظيفة Linux متوفرة ، مما يجعل من الممكن تحميل Windows DLL ثم الاتصال وظائف في الداخل.

لذلك ، إذا كان .dll الملف الذي لديك بالفعل هو Windows DLL ، قد تجد طريقة لاستخدامه في برنامجك.

. (من الممكن أيضًا أن يقوم شخص ما على Linux ببناء مكتبة Linux عادية ودعاها .dll لسبب ما.)

من الممكن أن تربطهم باستخدامهم نبيذ. كان دعم هذا مرة واحدة هناك كتجريبي - لا أعرف وضعه الحالي.

نعم يمكننا استخدام DLL بمساعدة النبيذ. فقط قم بتثبيت Wine64 في Linux

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