我正在创建一个可以使用GDAL(如果存在)的c ++程序。我可以检查系统中是否存在GDAL,但如果我的程序是使用GDAL编译的,我需要如何编写程序来包含/不包含GDAL库?
非常感谢, 卡洛斯。
答案 0 :(得分:1)
虽然我没有使用过CMake,但是如果库可用,你可以链接它,并将标志传递给定义宏的编译器(例如-DHAVE_GDAL
)。然后在您的源代码中使用预处理器检查HAVE_GDAL
并仅在定义时使用GDAL功能。
您的来源中有这样的内容:
#ifdef HAVE_GDAL
// Use GDAL functionality
#else
// Use something else
#endif
答案 1 :(得分:0)
一般来说,如果将应用程序链接到共享对象(DLL),如果共享对象丢失,程序将无法启动。我不确定是否还有另一种方法,而不是简单地在启动时加载SO,如果你得到了库的句柄,使用dlsym(或Windows上的GetProcAddress)来获取你需要的函数,并以这种方式调用它们