我使用最近的 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 是否存在),然后如果它可以完成运行时链接?