最近用過(guò)了 GPUImage 做美顏功能,為了防止沖突把里面的類(lèi)名改了,但是有些全局的變量沒(méi)有注意到,沒(méi)有改名。我們做的是SDK靜態(tài)庫(kù),結(jié)果我把庫(kù)給出去后,第三方也用到了GPUImage,編譯鏈接的時(shí)候并沒(méi)有報(bào)沖突,但是程序跑起來(lái)的時(shí)候掛掉了。后來(lái)跟了一下,奔潰原因如下://下面的數(shù)組是個(gè)全局變量// BT.709, which is the standard for HDTV.const GLfloat kColorConversion709[] = { 1.164, 1.164, 1.164, 0.0, -0.213, 2.112, 1.793, -0.533, 0.0,
};在另外一個(gè)文件中用extern引用extern const GLfloat kColorConversion601[];使用該值得地方,夾斷點(diǎn)調(diào)試,正常 _preferredConversion 賦值后為 1,有問(wèn)題的時(shí)候,從kColorConversion601 內(nèi)存拿不到值,訪問(wèn)內(nèi)存崩潰:_preferredConversion = kColorConversion601;問(wèn)題:上面說(shuō)的全局變量,在SDK中一共有兩份,沒(méi)有編譯鏈接錯(cuò)誤,這是什么原因,能說(shuō)下具體編譯鏈接的過(guò)程嗎?猜想是有兩份相同變量,去找變量的時(shí)候地址錯(cuò)誤了,這個(gè)過(guò)程具體是怎樣的,很想知道如果調(diào)整下庫(kù)的鏈接順序,奔潰的問(wèn)題可以解決,感覺(jué)挺奇怪的希望了解到朋友給講一下,雖然問(wèn)題找到了,也解決了,但是很想知道為什么?### 問(wèn)題描述問(wèn)題出現(xiàn)的環(huán)境背景及自己嘗試過(guò)哪些方法相關(guān)代碼// 請(qǐng)把代碼文本粘貼到下方(請(qǐng)勿用圖片代替代碼)你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?
兩份相同C/C++全局變量鏈接沒(méi)問(wèn)題,運(yùn)行崩潰的問(wèn)題
慕的地8271018
2019-01-02 11:22:11