0

Windows DLL を作成する場合、(dllexport を使用して) エクスポートされたシンボルを簡単に選択できます。このような状況では、エクスポートされていないシンボルはライブラリの外では見えません。Linuxで同じ機能を得るにはどうすればよいですか? つまり、プロジェクトに 10 個の関数があるとします。そのうちの 3 つはエクスポートする必要があり、残りの 7 つはライブラリ API から使用できないヘルパー関数です。そのような方法でSOファイルを作成するにはどうすればよいですか?

4

1 に答える 1

1

Linux/GCC では、デフォルトですべてがエクスポートされます (もちろん、言語規則によって異なりますが、匿名の名前空間にあるものはエクスポートされません)。

シンボルのエクスポートを停止したい場合は、 を使用できます__attribute__((__visibility__("hidden")))。例えば:

__attribute__((__visibility__("hidden"))) void myPrivateFunction();
于 2013-08-20T19:27:11.687 に答える