سؤال

الأمر مثير للاهتمام أكثر من أي شيء آخر، ولكن هل يمكنك تجميع تطبيق DirectX ضمن نظام التشغيل Linux؟

من الواضح أنه لا يوجد SDK رسمي، لكنني كنت أفكر أنه قد يكون ممكنًا مع النبيذ.

من المفترض أن النبيذ لديه تطبيق لواجهة DirectX لتشغيل الألعاب؟هل من الممكن الارتباط ضد ذلك؟(يحرر:وهذا ما يسمى winelib)

إذا فشل ذلك، ربما يكون هناك مترجم متقاطع مع التطبيق الذي يعمل تحت النبيذ.

أجاب النصف على سؤالي هنا، لكن تساءلت عما إذا كان أي شخص قد سمع عن شيء كهذا يتم القيام به؟

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

المحلول

لقد حالفني بعض الحظ في هذا.لقد تمكنت من تجميع هذا المثال البسيط لـ Direct3D.

لقد استخدمت winelib لهذا (حزمة wine-dev على Ubuntu).شكرا ل أليستر لتوجيهي إلى winelib.

لقد قمت بتعديل المصدر قليلاً لتحويل wchars إلى أحرف (1 في السطر 52، 2 في السطر 55، عن طريق إزالة L قبل السلسلة الحرفية).قد يكون هناك طريقة للتغلب على هذا، ولكن هذا جعله يعمل.

ثم قمت بتجميع المصدر بما يلي:

wineg++ -ld3d9 -ld3dx9 triangle.cpp

يؤدي هذا إلى إنشاء ملف ثنائي a.out.exe.so، بالإضافة إلى برنامج نصي a.out لتشغيله تحت النبيذ.

نصائح أخرى

إذا كان الأمر لا يتعلق بالنقل بل بالإنشاء، فيجب أن تفكر حقًا في OpenGL لأن واجهة برمجة التطبيقات هذه قوية مثل DirectX وأسهل بكثير في النقل إلى Mac أو Linux.

لا أعرف متطلباتك لذا من الأفضل أن أذكرها.

لا يمكنك الارتباط بالنبيذ لأنه في الأساس عبارة عن مانع/مترجم للمكالمات وليس مجموعة من المكتبات التي يمكنك الارتباط بها.إذا كان Linux مهمًا، فانتقل إلى OpenGL/SDL/OpenAL.

أعتقد (لم أحاول ذلك مطلقًا) أنه يمكنك تجميع ثنائيات Linux مقابل winelib.لذلك فهو يعمل تمامًا مثل نظام التشغيل Linux القابل للتنفيذ، ولكن مع مكتبات Windows.

http://www.winehq.org/site/docs/winelib-guide/index

انتقل إلى الدليل الذي يحتوي على المصدر واكتب:

winemaker --lower-uppercase -icomdlg32 -ishell32 -ishlwapi -iuser32 -igdi32 -iadvapi32 -ld3d9 .
make
wine yourexecutable.exe.so

إذا حصلت على هذا الخطأ:

main.c:95:5: error: ‘struct IDirect3D9’ has no member named ‘CreateDevice’

تأكد من تسمية ملفك main.cpp وليس main.c.

لا توجد حاليًا طريقة لتجميع تعليمات DirectX البرمجية لاستهداف Linux مباشرةً.يمكنك إنشاء تطبيقك كما تفعل عادةً، ثم تشغيله باستخدام طبقة توافق مثل Wine/Cedega.

خمر هي الطريقة الوحيدة لتشغيل DirectX في Linux

يمكنك تجميع تطبيقات Directx في Linux، ولكن لا يمكنك تشغيلها على الفور.إذا كنت تستخدم مترجمًا متقاطعًا يجعل Windows exe ويشير إلى Windows sdk وdirectx sdk.

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