Ho una libreria condivisa che dovrebbe esportare solo una funzione contrassegnata con __attribute__ ((visibility ("default")))
. Si collega anche con un'altra libreria statica (fftw), emingw -fvisibility = hidden non sembra funzionare
#include<fftw3.h>
è preceduto da:
#pragma GCC visibility push(hidden)
Il comando linker utilizzato:
g++.exe -fvisibility=hidden -shared -o mylib.dll -Wl,--out-implib,mylib.dll.a -Wl,--no-whole-archive libfftw3.a libfftw3_omp.a -lgomp
Ora la libreria risultante è enorme e se Controllo le funzioni esportate che include TUTTE le funzioni fftw e TUTTE le funzioni dei miei file. Sembra che mingw ignori le opzioni di visibilità. Ho letto che in precedenza aveva dato un avviso su -fvisibility
, ma ora viene compilato senza alcun tipo di avviso.
Mingw e gcc 4.6.1 supportano i flag di visibilità? Se sì, come faccio a eliminare tutte le cose inutili nella mia libreria condivisa?