2011-07-17 8 views
8

मुझे एक स्क्रिप्ट ("iterator.c") को एक डीएलएल में संकलित करने में मदद की ज़रूरत है। मैं VS2010 का उपयोग नहीं कर सकता क्योंकि यह नहीं सी 99 मानक में सी में जोड़े गए सुविधाओं का समर्थन करता है (मैं "complex.h" का उपयोग कर रहा हूं लेकिन वीबी इसका समर्थन नहीं करता है)।जीसीसी या सिगविन में डीएलएल बनाना?

मैं एक विकल्प की तलाश में हूं लेकिन मुझे जो भी मिला है वह जीसीसी है जो मुझे नहीं पता कि कैसे स्थापित/उपयोग करना है (वास्तव में, मैंने दस्तावेज के माध्यम से पढ़ने के आधे घंटे की तरह बिताया है और मैं नहीं करता हूं ' यह भी समझ में नहीं आता कि मुझे इसे कैसे इंस्टॉल करना है), और सिगविन, जिसे मैंने पहले ही इंस्टॉल किया है लेकिन मुझे नहीं पता कि इसका उपयोग कैसे किया जाए। इसके अलावा, मैंने मिनीजीडब्ल्यू स्थापित किया है लेकिन मुझे लगता है कि यह सिग्विन जितना ही कम है, और मुझे अभी भी पता नहीं है कि डीएलएल कैसे बनाया जाए।

ऐसा नहीं है कि मैं सभी आलसी रहा हूं और यहां तक ​​कि यह भी कोशिश नहीं की है, यह सिर्फ इतना है कि ये कंपाइलर्स पहले कभी भी उपयोग नहीं किए गए हैं (ज्यादातर पायथन आईडीईएल और विजुअल स्टूडियो, जो चीजों को बहुत आसान बनाता है तुम्हारे लिए)। मैं खो गया हूँ।

क्या कोई मुझे डीएलएल बनाने के लिए इस टूल का उपयोग करने के बारे में कुछ सलाह दे सकता है जिसे मैं किसी अन्य स्क्रिप्ट से एक्सेस कर सकता हूं? यह वास्तव में महत्वपूर्ण है।

अग्रिम धन्यवाद।

उत्तर

11

आप विधि आप इस तरह के रूप में निर्यात करना चाहते हैं के सामने __declspec (dllexport) डालना होगा, तो आप अधिकतम करने के लिए इस #define सकता है यह आसान

EXPORT_DLL void hello() { ... } 

dll उपयोग

gcc -c -mno-cygwin mydll.c 
gcc -shared -o mydll.dll mydll.o -Wl,--out-implib,libmylib.dll.a 
संकलन करने के लिए

तो संलग्न करने के लिए

gcc -o myexe.exe test.o mydll.dll 

संपादित करें: सबसे महत्वपूर्ण भाग भूल, आप एक mydll.h फाई बनाने की जरूरत है अपनी विधि परिभाषा को शामिल करने के लिए le ताकि संकलक बाद में भरने के लिए लिंकर के लिए एक स्थान आरक्षित करना जानता हो। यह

#ifndef MYDLL_H 
#define MYDLL_H 

extern "C" __declspec(dllexport) 
#define EXPORT_DLL __declspec(dllexport) 

EXPORT_DLL void hello(); 

#endif 
+0

इतना आसान नहीं है कि '__declspec' '__delspec' नहीं है? –

+0

बाहरी "सी" __declspec (dllexport) –

+0

फ्लाई पर लिखते समय टाइप करने के लिए धन्यवाद दोस्तों। –

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