不同模組命名相同導致的程式崩潰問題

2021-06-25 10:37:03 字數 317 閱讀 6130

最近幫同事除錯程式發現的乙個問題:

底層所用的so裡包含了乙個類的呼叫,名稱叫config,用於讀取config檔案進行程式配置,而他的呼叫此so的測試程式裡也宣告了乙個全域性的這個類的物件,可是這個類的實現卻與so的底層不相同,在執行過程中,他的外層函式的config可以正確執行, 但是進入該so庫函式以後,此類的呼叫出現segment fault。

發現去掉外層config類以後,程式能夠執行起來。因此可以推斷是這兩個同名的類在程式鏈結的時候出現了合併導致了錯誤。

解決方案:

1.將外層的類進行改名

2.給外層的類加命名空間(沒試過)

不同命名空間下兩個相同命名空間導致不能明確引用

問題是這樣的,比如我自己定義了命名空間config.system.不巧裡面有了system,這樣.net本身的system命名空間就訪問不到了。怎麼寫都是config.system。其實解決也很簡單,有兩種辦法乙個是使用 global system.io.file.exists filepath 就...

C 中不同程式集(dll)存在相同的命名空間

一 遇到問題 1.型別 idatabase 同時存在於 stackexchange.redis.strongname,version 1.2.6.0,culture neutral,publickeytoken c219ff1ca8c2ce46 和 stackexchange.redis,versi...

必須知道的導致程式崩潰點。

1.在 開發過程中,有的時候我們會在源 中新增一些除錯 和資訊列印,因為想看看程式執行到這個點會發生些什麼。每次出現這種情況的時候,我建議你想想是否新增乙個單元測試用例會更有意義?除錯完就沒用的 通常沒有必要留著。但有的時候,我們仍會留下一些日誌列印,以便出現問題時可以更好地進行診斷。2.在c 中可...