c -如何管理依赖于可能安装或不安装的库的特性?



我正在为一个图形程序编写一些新的功能(主要用C语言编写,少部分用c++语言)。新功能将利用libgmic。该程序的一些用户将安装libgmic,相当多的用户不会。程序是整体的:我没有写一个插件,这将是主程序的一部分。用正确的头编译程序很容易,但是我需要能够在运行时检查是否安装在用户的系统上,以便启用/禁用特定的菜单项,以便没有安装库的用户不能调用此功能并使程序崩溃。做这件事最好的办法是什么?

您需要在运行时加载库与dlopen(或LoadLibrary在Windows上),而不是链接到它,获得函数指针与dlsym(GetProcAddress在Windows上),并使用它们,而不是从头函数原型。否则,如果没有库,您的程序将无法启动(或在某些情况下崩溃)。

一些库很好地支持这种用法,例如为您需要的所有函数提供类型。和别人在一起,你只能靠自己,但这仍然是可能的。

最新更新