2013-08-20 22 views
0

創建Windows DLL時,可以輕鬆選擇導出的符號(使用dllexport)。在這種情況下,未導出的符號在庫外不可見。如何在Linux上獲得相同的功能? 換句話說: 假設我在一個項目中有10個函數。其中三個應該導出,其餘7個是輔助函數,它們不應該從庫API中使用。我如何以這種方式創建SO文件,讓我實現這一目標?如何只從Linux SO庫導出某些功能?

+0

假設您使用GCC,[this](http://gcc.gnu.org/wiki/Visibility)應該有所幫助。 – devnull

回答

1

在默認情況下,一切的Linux/GCC輸出(取決於語言規則,當然是:在一個匿名的命名空間的東西永遠不會被導出)。

如果要停止被導出的符號,你可以使用__attribute__((__visibility__("hidden")))。例如:

__attribute__((__visibility__("hidden"))) void myPrivateFunction(); 
+0

添加要輸出的代碼。 – TheRealChx101