У меня есть общая библиотека, которая должна экспортировать только одну функцию, отмеченную __ attribute__ ((visibility ("default") ))
. Он также связан с другой статической библиотекой (fftw), а
#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 и ВСЕ функции из моих файлов. Похоже, что mingw игнорирует параметры видимости. Я читал, что раньше он выдавал предупреждение о -fvisibility
, но теперь он компилируется без каких-либо предупреждений.
Поддерживают ли mingw и gcc 4.6.1 флаги видимости? Если да, как мне избавиться от всего ненужного в моей общей библиотеке?