2011-11-03 16 views
5

मेरे पास एक साझा लाइब्रेरी है जिसे केवल एक फ़ंक्शन निर्यात करना है जिसे __attribute__ ((visibility ("default"))) के साथ चिह्नित किया गया है। यह भी एक और स्थिर पुस्तकालय (FFTW) के साथ लिंक, औरmingw -fvisibility = छुपा काम नहीं प्रतीत होता है

#include<fftw3.h> 

साथ पहले है:

#pragma GCC visibility push(hidden) 

लिंकर इस्तेमाल किया आदेश:

g++.exe -fvisibility=hidden -shared -o mylib.dll -Wl,--out-implib,mylib.dll.a -Wl,--no-whole-archive libfftw3.a libfftw3_omp.a -lgomp 

अब जिसके परिणामस्वरूप पुस्तकालय विशाल और अगर है मैं निर्यात किए गए कार्यों की जांच करता हूं जिसमें इसमें सभी fftw फ़ंक्शन शामिल हैं, और मेरी फ़ाइलों से सभी फ़ंक्शन शामिल हैं। ऐसा लगता है कि मिंगव दृश्यता विकल्पों को अनदेखा करता है। मैंने पढ़ा है कि इससे पहले इसे -fvisibility के बारे में चेतावनी दी गई थी, लेकिन अब यह किसी भी चेतावनी के साथ संकलित नहीं है।

क्या mingw और gcc 4.6.1 समर्थन दृश्यता झंडे करता है? यदि हां, तो मैं अपनी साझा लाइब्रेरी में सभी अनावश्यक सामानों से कैसे छुटकारा पा सकता हूं?

उत्तर

1

विंडोज पीई ऑब्जेक्ट फ़ाइलों में दृश्यता विशेषता नहीं है। निकटतम dllexport/dllimport है, लेकिन यह केवल साझा पुस्तकालयों (डीएलएल) के लिए है। तो या तो आप __declspec(dllexport) के साथ सभी एफएफटीडब्लू फ़ंक्शंस को चिह्नित नहीं करते हैं, और आशा है कि स्थिर लाइब्रेरी को The Right Thing (tm) से लिंक करने की उम्मीद है, या आप अपनी लाइब्रेरी से लिंक करते समय FFTW से लिंक न करने का ध्यान रखते हैं।

इसे खराब दृश्यता विशेषताओं के बारे में चेतावनी दी जानी चाहिए, शायद आपको चेतावनी स्तर -Wall -Wextra -pedantic को चालू करने की आवश्यकता है)।

4

मिंगव जीसीसी टूलचेन का एक विंडोज पोर्ट है लेकिन विंडोज dll लिनक्स so नहीं है। खासकर the link part is different

  • __declspec(dllexport) जबकि

जोड़ने जबकि पुस्तकालय

  • __declspec(dllimport) संकलन आप के लिए बहु समर्थन चाहते हैं: MingGW साथ दृश्यता निर्दिष्ट करने के लिए आप Windows रास्ता जाने के लिए और के साथ अपने वर्गों और कार्यों पर टिप्पणी करने के लिए है जीसीसी टूलचेन आप अपने प्रोजेक्ट में हेडर जोड़ सकते हैं जो आपके लिए कर रहा है। चरण-दर-चरण उदाहरण के लिए और विवरण के बहुत सारे have a look at GCC's visibility guide

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