Я разработал приложение с использованием недавнего Glade, поэтому мне нужно, чтобы оно загружало пользовательский интерфейс из XML во время выполнения, используя GtkBuilder.Если я попытаюсь запустить его на дистрибутиве со слишком старым Gtk (например, RHEL 5), он потерпит неудачу, как этот
неопределенный символ: gtk_builder_new
, что является нормальным и ожидаемым.Но мне интересно, есть ли способ отловить эту ошибку и вместо этого отобразить диалоговое окно с ошибкой графического интерфейса, говорящее что-то вроде: «Ваша версия Gtk недостаточно новая»?Это ошибка, которая происходит до того, как мой main () запускается, так что вопрос в том, есть ли способ обработки ошибок компоновки во время выполнения?Во время поиска в Google я нашел упоминание о концепции плагина линкера, но пока не нашел подробностей об этом.Похоже, что-то, что должно было бы существовать вне моего приложения в любом случае, так что, возможно, это зашло бы немного дальше.
Я мог бы использовать dlopen () для загрузки Gtk, но это нелепо, потому что мне пришлось бы дать полнуюпуть к нему, и тогда мне придется многократно вызывать dlsym (), чтобы связать каждую нужную мне функцию.ld-linux.so ищет меня.Есть ли способ, которым я могу использовать ld-linux.so, чтобы сообщить мне путь к libgtk без фактической загрузки, затем я проверяю, является ли версия достаточно новой (или просто существует gtk_builder_new), а затем заканчиваю компоновку во время выполнения, если все в порядке?