如何在 c++ 程序中将 GDAL 库用作可选库

How can I use GDAL library as optional in my c++ program?

本文关键字:GDAL c++ 程序      更新时间:2023-10-16

我正在创建一个可以使用GDAL(如果存在)的c ++程序。我可以检查系统中是否存在 GDAL,但是如果我的程序是使用 GDAL 编译的,我需要如何对我的程序进行编码以包含/不包含 GDAL 库?

非常感谢,卡洛斯。

虽然我没有使用 CMake,但如果库可用,您可以与它链接,并将一个标志传递给定义宏的编译器(例如 -DHAVE_GDAL)。然后在源中使用预处理器检查HAVE_GDAL,并且仅在定义了 GDAL 功能时使用 GDAL 功能。

您的源中类似这样的东西:

#ifdef HAVE_GDAL
// Use GDAL functionality
#else
// Use something else
#endif

一般来说,如果将应用程序链接到共享对象 (DLL),则在缺少共享对象时,程序将无法启动。我不确定除了在启动时简单地加载 SO 之外,是否有其他方法,如果您获得库的句柄,请使用 dlsym(或 Windows 上的 GetProcAddress)来获取您需要的函数,并以这种方式调用它们。