第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何處理靜態(tài)鏈接庫之間的符號(hào)沖突?

如何處理靜態(tài)鏈接庫之間的符號(hào)沖突?

C
暮色呼如 2019-09-19 16:44:03
編寫庫時(shí),最重要的規(guī)則和最佳實(shí)踐之一是將庫的所有符號(hào)放入特定于庫的命名空間。由于namespace關(guān)鍵字,C ++使這很容易。在C中,通常的方法是在標(biāo)識(shí)符前面加上一些特定于庫的前綴。C標(biāo)準(zhǔn)的規(guī)則放在那些一些限制(安全編譯):AC編譯器可以看只是一個(gè)標(biāo)識(shí)符的前8個(gè)字符,所以foobar2k_eggs并foobar2k_spam可能被解釋為有效相同標(biāo)識(shí)符-但是每一個(gè)現(xiàn)代的編譯器允許任意長標(biāo)識(shí)符所以在我們這個(gè)時(shí)代(21世紀(jì)),我們不應(yīng)該為此煩惱。但是如果你面對(duì)一些你無法改變符號(hào)名稱/標(biāo)識(shí)符的庫呢?也許你只有一個(gè)靜態(tài)二進(jìn)制文件和標(biāo)題或者不想要,或者不允許自己調(diào)整和重新編譯。
查看完整描述

3 回答

?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

C標(biāo)準(zhǔn)的規(guī)則對(duì)這些規(guī)則施加了一些限制(用于安全編譯):AC編譯器可能只查看標(biāo)識(shí)符的前8個(gè)字符,因此foobar2k_eggs和foobar2k_spam可以被有效地解釋為相同的標(biāo)識(shí)符 - 但是每個(gè)現(xiàn)代編譯器都允許任意長標(biāo)識(shí)符,所以在我們這個(gè)時(shí)代(21世紀(jì)),我們不應(yīng)該為此煩惱。

這不僅僅是現(xiàn)代編譯器的延伸; 當(dāng)前的C標(biāo)準(zhǔn)還要求編譯器支持合理長的外部名稱。我忘記了確切的長度,但如果我沒記錯(cuò)的話,它就像31個(gè)字符。

但是如果你面對(duì)一些你無法改變符號(hào)名稱/標(biāo)識(shí)符的庫呢?也許你只有一個(gè)靜態(tài)二進(jìn)制文件和標(biāo)題或者不想要,或者不允許自己調(diào)整和重新編譯。

然后你就被困住了。抱怨圖書館的作者。我曾經(jīng)遇到過這樣一個(gè)錯(cuò)誤:我的應(yīng)用程序的用戶由于Debian的libSDL鏈接而無法在Debian上構(gòu)建它libsoundfile,這至少在當(dāng)時(shí)用可變的類似的方式污染了全局命名空間dsp(我小時(shí)候你不會(huì)?。N蚁駾ebian抱怨,他們修復(fù)了他們的軟件包并將修復(fù)程序發(fā)送到上游,我認(rèn)為它已經(jīng)應(yīng)用了,因?yàn)槲以僖矝]有聽說過這個(gè)問題。

我真的認(rèn)為這是最好的方法,因?yàn)樗鉀Q了每個(gè)人的問題。你做的任何本地黑客都會(huì)將問題留在庫中,以便下一個(gè)不幸的用戶再次遇到并與之抗?fàn)帯?/p>

如果你真的需要快速修復(fù),并且你有源代碼,你可以-Dfoo=crappylib_foo -Dbar=crappylib_bar在makefile中添加一堆等來修復(fù)它。如果沒有,請(qǐng)使用objcopy您找到的解決方案。


查看完整回答
反對(duì) 回復(fù) 2019-09-19
  • 3 回答
  • 0 關(guān)注
  • 1054 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)