如何在 c++ 程序中将 GDAL 库用作可选库
How can I use GDAL library as optional in my c++ program?
我正在创建一个可以使用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)来获取您需要的函数,并以这种方式调用它们。
相关文章:
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 使用 GDAL 获取矢量数组中的所有行数和列数
- 如何使用 C++ gdal 库将栅格地理从 EGM96 转换为 WGS84 椭球体高度基准面
- 无法使用"generate_vcxproj.bat"生成 GDAL Visual Studio 项目
- 使用CMake而不是g++链接GDAL库
- 如何使用 gcc 5.5 在 gdal 2.4 中启用 c++14
- 使用 GDAL 将 DXF 块从一个文件导入到另一个文件
- Java JNI GDAL 本机库在重新部署为 Web 应用程序时出现类加载器错误
- C++ GDAL 算法 GDALFillNodata() 的实现
- 使用 GDAL/OGR C++将 GeoTiff 的 XY 点重新投影到纬度/经度
- GDAL DestroyFeature() 方法产生分割错误
- 在C++中编译/执行 GDAL 时出现问题
- 无法使用 OGR/GDAL 从形状文件中获取 EPSG
- 无法在 Windows 上将 OSG 与 GDAL 一起使用
- 使用GDAL在FAA部分上找到像素位置
- GeoDjango GDAL installation
- 如何从GDAL位于RAM中的Geotiff创建数据集
- 链接器错误构建GDAL VS2017
- 如何将GDALResampleAlg传递给GDAL的RasterIO?
- 如何在GDAL输出文件中设置分类颜色