Mam wspólną bibliotekę, która ma eksportować tylko jedną funkcję oznaczoną __attribute__ ((visibility ("default")))
. Łączy ona również z innej biblioteki statycznych (fftw) imingw -fvisibility = ukryty nie działa
#include<fftw3.h>
jest poprzedzone:
#pragma GCC visibility push(hidden)
Komenda łącznik używany:
g++.exe -fvisibility=hidden -shared -o mylib.dll -Wl,--out-implib,mylib.dll.a -Wl,--no-whole-archive libfftw3.a libfftw3_omp.a -lgomp
Teraz powstały biblioteka jest ogromny i jeśli Sprawdzam wyeksportowane funkcje, które obejmują WSZYSTKIE funkcje fftw oraz WSZYSTKIE funkcje z moich plików. Wygląda na to, że mingw ignoruje opcje widoczności. Czytałem, że wcześniej ostrzegał o -fvisibility
, ale teraz kompiluje się bez ostrzeżeń.
Czy mingw i gcc 4.6.1 obsługują flagi widoczności? Jeśli tak, w jaki sposób mogę pozbyć się wszystkich niepotrzebnych rzeczy w mojej wspólnej bibliotece?