मेरे पास एक साझा लाइब्रेरी है जिसे केवल एक फ़ंक्शन निर्यात करना है जिसे __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 समर्थन दृश्यता झंडे करता है? यदि हां, तो मैं अपनी साझा लाइब्रेरी में सभी अनावश्यक सामानों से कैसे छुटकारा पा सकता हूं?