2013-04-21 63 views
1

我想導出一些靜態變量在C庫(例如libA)從其他C文件從外部使用它們。導出C本地變量:JNI運行時行爲問題

我用extern關鍵字爲桌面應用程序,但是這是工作,當 我搬到JNI & Android上,extern關鍵字,因爲試圖建立*。所以力霸的時候不能做的伎倆,無論我的其他C文件(使用libA靜態變量),我都對libA的所有「extern變量」都有「未定義引用」的編譯器錯誤。爲此,我在生成libA的* .so時嘗試鏈接C文件,但在運行時,我注意到變量具有不同的地址,這不是extern關鍵字的正常結果。 (這意味着我操縱不同的地址< =>不同的變量,而不是相同的地址< =>「相同的變量」)。

那麼,有沒有辦法解決這個問題?也許使用memcpy或memset,如果它是正確的方式,請怎麼做?

在此先感謝。

B.R

回答

0

會在JNI文件中設置一個環境變量幫助你嗎?

例如:setenv("GLOBALVARIABLE", "ON", 1);

+0

感謝您的回答,但我不認爲這可以解決問題。也許這可能是生成* .so的一些替代方法,但我不明白它將如何解決運行時行爲(不同的地址) – 2013-04-21 10:25:24