0

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

非常感谢,卡洛斯。

4

2 回答 2

0

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

于 2012-04-19T08:16:10.707 回答
0

虽然我没有使用 CMake,但如果该库可用,您可以链接它并将标志传递给定义宏的编译器(例如-DHAVE_GDAL)。然后在您的源代码中,您使用预处理器来检查HAVE_GDAL并仅在已定义的情况下使用 GDAL 功能。

在您的来源中是这样的:

#ifdef HAVE_GDAL
// Use GDAL functionality
#else
// Use something else
#endif
于 2012-04-19T08:25:31.447 回答