JNI編程JNIEXPORT關鍵字的解釋說明


在普通的C語言里,如果想將函數或者變量使用范圍現在在當前文件,需要對其添加static修飾。但如果希望將其暴露給共享庫的指定文件,需要通過符號隱藏顯示來控制。

GCC4.0以后提供了符號可見性選項-fvisibility=vis,vis可以是默認值default、或者hidden表示隱藏。
對應的代碼可見性屬性為__attribute__((visibility("default")))或者__attribute__((visibility("hidden")))

為了簡化符號輸出形式,可以通過EXPORT簡化其寫法。如下:
  #define EXPORT __attribute__((visibility("default")))
  EXPORT int Func();
所以JNIEXPORT可以認為是#define JNIEXPORT __attribute__((visibility("default"))) 這樣來的,當然具體實現可能復雜些,要判斷不同編譯器等等

下面是一個具體例子:
#if defined(__GNUC__) && __GNUC__ >= 4
  #define GMATH_EXPORT __attribute__((visibility("default")))
#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
  #define GMATH_EXPORT __attribute__((visibility("default")))
#else
  #define GMATH_EXPORT
#endif
GMATH_EXPORT unsigned gpower(unsigned n) {
  //
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM