__attribute__ ((visibility ("default")))
とマークされている関数を1つだけエクスポートする共有ライブラリがあります。それはまた別の静的ライブラリ(FFTW)とリンクし、mingw -fvisibility = hiddenは動作していないようです
#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は可視性フラグをサポートしていますか?はいの場合、共有ライブラリのすべての不要なものを取り除くにはどうしたらいいですか?