我使用最近的Glade開發了一個應用程序,所以我需要它在運行時使用GtkBuilder從XML加載UI。如果我嘗試在具有太舊了一個GTK(如RHEL 5),它將無法像這樣如何爲不匹配的共享對象處理「未定義符號」錯誤
未定義的符號一個發行版上運行此:gtk_builder_new
這是正常的和預期。但是,我想知道是否有辦法捕捉到這個錯誤,而是顯示一個GUI錯誤對話框,例如「你的Gtk版本不夠新」?這是我的main()開始之前發生的錯誤,所以問題是,有沒有辦法處理運行時鏈接錯誤?雖然使用谷歌搜索,我發現了一個鏈接器插件的概念,但我還沒有找到有關的細節。這聽起來像是我的應用程序之外必須存在的東西,所以也許這有點遠。
我可以使用dlopen()加載Gtk,但這很荒謬,因爲我必須給它的完整路徑,然後我必須調用dlsym()很多來鏈接我需要的每個函數。 ld-linux.so搜索我。有沒有一種方法可以使用ld-linux.so來告訴我libgtk的路徑而不實際加載它,然後檢查版本是否足夠新(或只是否存在gtk_builder_new),然後在運行時鏈接完成,如果沒有問題?
使用'dlopen'和'dlsym'檢查此特定功能 – Erik 2011-03-30 08:22:20
感謝您提出的解決方案。最後我們停止了對RHEL 5的支持。我仍然認爲一個非常理想的解決方案「捕捉鏈接錯誤並以任意,用戶友好的方式顯示它們」尚未實現,可能需要做一些關於如何完成運行時鏈接和啓動流程的更根本性更改。 – ecloud 2011-08-23 17:32:27