2008-09-07 12 views
12

किसी और चीज़ की तुलना में अधिक ब्याज से बाहर, लेकिन क्या आप लिनक्स के तहत एक डायरेक्टएक्स ऐप संकलित कर सकते हैं?क्या लिनक्स में डायरेक्टएक्स ऐप्स विकसित करना संभव है?

स्पष्ट रूप से कोई आधिकारिक एसडीके नहीं है, लेकिन मैं सोच रहा था कि शराब के साथ यह संभव हो सकता है।

संभावित रूप से वाइन को गेम चलाने के लिए डायरेक्टएक्स इंटरफेस का कार्यान्वयन है? क्या इसके खिलाफ लिंक करना संभव है? (संपादित करें: इसे winelib कहा जाता है)

यह विफल हो रहा है, शायद शराब के नीचे चल रहे ऐप के साथ एक मिंगव क्रॉस कंपाइलर।

आधे ने यहां अपने स्वयं के प्रश्न का उत्तर दिया, लेकिन आश्चर्य हुआ कि अगर किसी ने ऐसा कुछ किया है तो क्या हुआ?

उत्तर

10

मैं इस के साथ कुछ भाग्यशाली रहे हैं। मैंने this simple Direct3D example संकलित करने में कामयाब रहा है।

मैंने इसके लिए विनेलिब का उपयोग किया (उबंटू पर शराब-देव पैकेज)। Winelib को इंगित करने के लिए alastair के लिए धन्यवाद।

मैंने स्ट्रिंग अक्षर से पहले एल को हटाकर wchars को वर्णों में बदलने के लिए थोड़ा सा स्रोत (लाइन 52 पर 2, लाइन 55 पर 2) को संशोधित करने के लिए थोड़ा सा स्रोत संशोधित किया। इसके चारों ओर एक रास्ता हो सकता है, लेकिन यह इसे ऊपर और चल रहा है।

मैं उसके बाद निम्न के साथ स्रोत संकलित:

wineg++ -ld3d9 -ld3dx9 triangle.cpp 

यह एक a.out.exe.so द्विआधारी, साथ ही शराब के तहत इसे चलाने के लिए एक a.out स्क्रिप्ट उत्पन्न करता है।

0

वर्तमान में लिनक्स को लक्षित करने के लिए डायरेक्टएक्स कोड को संकलित करने का कोई तरीका नहीं है। आप सामान्य रूप से अपने आवेदन का निर्माण करेंगे, फिर इसे शराब/सेडेगा जैसी संगतता परत का उपयोग करके चलाएं।

4

यदि यह पोर्टिंग करने और बनाने के बारे में नहीं है, तो आपको वास्तव में ओपनजीएल पर विचार करना चाहिए क्योंकि यह एपीआई डायरेक्टएक्स जितना शक्तिशाली है और मैक या लिनक्स के लिए बंदरगाह के लिए बहुत आसान है।

मुझे आपकी आवश्यकताओं को इतना बेहतर नहीं पता है।

2

में DirectX को चलाने के लिए यह अनिवार्य रूप से एक फोन interdictor/अनुवादक के बजाय पुस्तकालयों आप में हुक कर सकते हैं का एक सेट है के रूप में आप शराब के खिलाफ लिंक नहीं कर सकते हैं एक ही रास्ता है। यदि लिनक्स महत्वपूर्ण है ओपनजीएल/एसडीएल/ओपनएएल।

0

आप लिनक्स में एक डायरेक्टएक्स ऐप्स संकलित कर सकते हैं, लेकिन इसे सीधे लॉन्च नहीं कर सकते हैं। यदि आप एक क्रॉसकंपिलेटर का उपयोग करते हैं जो विंडोज एक्सई बनाता है और विंडोज़ एसडीके और डायरेक्टएक्स एसडीके को इंगित करता है।

2

मुझे विश्वास है (मैंने कभी यह कोशिश नहीं की है) आप Winelib के खिलाफ लिनक्स बाइनरी संकलित कर सकते हैं। तो यह एक लिनक्स निष्पादन योग्य की तरह काम करता है, लेकिन विंडोज पुस्तकालयों के साथ।

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

+0

हां, जब मैंने सवाल पूछा तो मैं यही सोच रहा था। मैं आगे की जांच करूंगा। – Nick

1

स्रोत के साथ निर्देशिका पर जाएँ और टाइप करें:

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

सुनिश्चित करें कि आप अपनी फ़ाइल main.cpp main.c नामित और नहीं किया है:

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

आप इस त्रुटि मिलती है ।