2011-09-26 12 views
6

मुझे निम्नलिखित समस्या है: मैं कुछ नियंत्रण इंजीनियरिंग सिस्टम अनुकरण करना चाहता हूं। चूंकि यह काफी जटिल है, मैंने कुछ (जटिल) समीकरण प्राप्त करने के लिए कंप्यूटर का उपयोग किया जिसे केवल fortran77 कोड में निर्यात किया जा सकता है। मेरे विकास पीसी पर यह कोई समस्या नहीं है (लिनक्स मशीन)।अनुवादक f2c का उपयोग कर एकल फोर्टन ऑब्जेक्ट को कैसे संकलित करें?

नहीं, मैं इसे हार्डवेयर में करना चाहता हूं और यहां मुझे विंडोज़ ओएस का उपयोग करना है। दुर्भाग्यवश matlab विंडोज़ पर gfortran का समर्थन नहीं करता है। इसलिए मैं उस बॉक्स पर फोर्ट्रान फाइलों को संकलित नहीं कर सकता।

मेरा विचार अब सी को अनुवाद करने के लिए था क्योंकि एक सी संकलक जीत पर matlab पर उपलब्ध है। कोई अन्य (बेहतर) विकल्प?

मेरे पास निम्नलिखित तरीके से कई सबब्रुटिन हैं।

 SUBROUTINE sys_rhs (x, v, dx, param) 
     REAL*8 x(6) 
C  code is coming here 
     RETURN 
     END SUBROUTINE 

यह अच्छा अभ्यास है और यह इंटरफ़ेस समारोह सी में लिखे में समारोह sys_rhs__ उपयोग करने के लिए काम करता है? समस्या यह है कि मैं इसका परीक्षण नहीं कर सकता क्योंकि मेरे पास विंडोज मशीन तक भारी पहुंच नहीं है। तो अगर मैं कोशिश करता हूं तो इसे काम करना चाहिए और मुझे बहुत प्रयोग करने की आवश्यकता नहीं है।

इसके अलावा मुझे विंडोज़ पर क्या lib की आवश्यकता है? उनसे कहां मिलना संभव है?

धन्यवाद ईसाई

+1

सी को अनुवाद करना वास्तव में सबसे खराब विकल्प की तरह लगता है। आपके MATLAB संस्करण के आधार पर यह * कुछ * fortran संकलक का समर्थन करेगा। चूंकि पिछले 10-15 वर्षों के किसी भी किलेर कंपाइलर f77 कोड संकलित करेंगे, बस एक और कंपाइलर ढूंढें - वह जो MATLAB के साथ काम करता है और उसका उपयोग करता है। या यदि आपके पास लिनक्स मैटलैब लाइसेंस है, तो इंटेल का लिनक्स पर उपयोग करें - लिनक्स पर यह मुफ्त है, अगर स्मृति मुझे सेवा प्रदान करती है। इसके अलावा, इस लड़के को अच्छी तरह से खेलने के लिए gfortran/g95 + matlab प्राप्त करने में कामयाब रहा, इसलिए यह संभव है। – Rook

+0

जैसा कि मैंने लिखा था: लिनक्स के तहत कोई समस्या नहीं है। मैं gfortran और अनुकरण का उपयोग कर संकलन कर सकते हैं।लेकिन हार्डवेयर एक जीत मशीन से जुड़ा हुआ है ... http://www.mathworks.de/support/compilers/R2010a/win32.html पर केवल प्रोप्यूटरी इंटेल फोर्ट्रान कंपाइलर का उल्लेख किया गया है (आर 2010 ए व्यवस्थापक द्वारा स्थापित है)। –

+0

@ क्रिस्टियनवॉल: यह आपके प्रश्न से बहुत स्पष्ट नहीं है, क्या आप फोरट्रान मेक्स-फाइल बनाने के बारे में बात कर रहे हैं? – Amro

उत्तर

0

उत्तर काफी सरल था: मेरे पास मेरे किलर कोड में कुछ वाक्यविन्यास त्रुटियां थीं। gfortran ऐसी कोई सख्त वाक्यविन्यास जांच नहीं करता है और इसके लिए फोर्टन कोड को सही तरीके से व्याख्या किया गया है। टाइपो को हटाने के बाद मैंने f2c के साथ ट्रांसकोडिंग सफलता प्राप्त की।

धन्यवाद

-1

वहाँ यह सब करने के लिए एक बेहतर समाधान है

अपने लिनक्स मशीन या अपने विंडोज़ मशीन का उपयोग में C/C++ फ़ंक्शन को लागू करने और फिर एक dll फ़ाइल उत्पन्न करते हैं।

मैटलैब में आप डीएलएल लोड कर सकते हैं और इसके अंदर के कार्यों को कॉल कर सकते हैं।

यहां एक साधारण ट्यूटोरियल है जो दिखाता है कि matlab के साथ डीएल को कैसे कॉल करें।

http://www.mathworks.com/matlabcentral/fileexchange/15065-example-of-loading-c-dll-and-performance-comparison

+0

समारोह फोर्ट्रान में लागू किया गया है क्योंकि मैं केवल मैक्सिमा (कंप्यूटर बीजगणित प्रणाली) में फोर्ट्रान को निर्यात कर सकता हूं जैसा कि मुझे पता है। लिनक्स पर एक डीएल कैसे उत्पन्न करें? MinGW? –

+0

http://www.ibm.com/developerworks/linux/library/l-dll/index.html –

0

इंटेल एक बहुत अच्छा fortran संकलक (http://software.intel.com/en-us/articles/fortran-compilers/) जो वे परीक्षण के लिए मुफ्त देने के लिए इस्तेमाल किया ... ;-)

पुनश्च नहीं, मैं इस कंपनी से जुड़ा हुआ नहीं बेचता है किसी भी प्रकार!

+0

क्षमा करें, प्रॉपर्टी सॉफ्टवेयर कोई रास्ता नहीं है क्योंकि यह मेरे लिए व्यक्तिगत रूप से नहीं बल्कि विश्वविद्यालय में मेरे संस्थान के लिए है। वे इससे खुश नहीं हैं क्योंकि उन्हें इसे संभालना होगा। –

+1

तो यदि मैथलैब डीएलएल में कोड संभाल सकता है (मै मैटलैब के लिए पोर्टिंग-फोर्टन-टू-विंडोज इश्यू के कारण यहां नहीं हूं ;-)) मैं डीएलएल बनाने की पहले से ही उल्लिखित दिशा को देखने का प्रस्ताव करता हूं। यह विंडोज के तहत चल रहे मिंगजीडब्ल्यू या सिग्विन के तहत जी77 का उपयोग करके काम करना चाहिए। – alk

0

आप gnumex प्रोजेक्ट को देखना चाहते हैं, जो कि जीएनयू जीसीसी कंपाइलर सूट (या तो मिनजीडब्ल्यू या सिगविन का उपयोग करके) मैक्स-फाइलों को संकलित करने की अनुमति देता है, जिसमें फोरट्रान प्रोग्राम संकलित करने के लिए जी 77 का उपयोग करने की क्षमता है।

संबंधित मुद्दे