Inside GDALAllRegister之四: 跳过driver
这个函数很短小:
/**
* \brief This method unload undesirable drivers.
*
* All drivers specified in the space delimited list in the GDAL_SKIP
* environmentvariable) will be deregistered and destroyed. This method
* should normally be called after registration of standard drivers to allow
* the user a way of unloading undesired drivers. The GDALAllRegister()
* function already invokes AutoSkipDrivers() at the end, so if that functions
* is called, it should not be necessary to call this method from application
* code.
*/ void GDALDriverManager::AutoSkipDrivers() {
if( CPLGetConfigOption( "GDAL_SKIP", NULL ) == NULL )
return; char **papszList = CSLTokenizeString( CPLGetConfigOption("GDAL_SKIP","") ); for( int i = 0; i < CSLCount(papszList); i++ )
{
GDALDriver *poDriver = GetDriverByName( papszList[i] ); if( poDriver == NULL )
CPLError( CE_Warning, CPLE_AppDefined,
"Unable to find driver %s to unload from GDAL_SKIP environment variable.",
papszList[i] );
else
{
CPLDebug( "GDAL", "AutoSkipDriver(%s)", papszList[i] );
DeregisterDriver( poDriver );
delete poDriver;
}
} CSLDestroy( papszList );
}
如果在环境变量GDAL_SKIP中指定某些driver,可以在运行时将该driver从GDALDriverManger中注销掉。这提供了一个基于配置的解决方案,比起前面通过编译时添加宏多了一个选择。考虑的还是比较周到的。
Inside GDALAllRegister之四: 跳过driver的更多相关文章
- Inside GDALAllRegister之一: 五大部分
基本信息 在GDAL的Tutorial中开篇即提到GDALAllRegister函数,它会注册所有已知的驱动,包括动态库自动加载的驱动.最关键是这句话: If for some application ...
- Inside GDALAllRegister之二: 自动加载驱动
代码 GetGDALDriverManager()->AutoLoadDrivers(); 包含了两部分: 首先获得GDALDriverManager的singleton对象的指针,这点之 ...
- Inside GDALAllRegister之三: 注册指定驱动
现在来仔细分析如何注册一个驱动的代码,看下面代码: #ifdef FRMT_vrt GDALRegister_VRT(); #endif 编译时指定或者取消FRMT_vrt,可以控制这条语句是否编译到 ...
- oracle的oci和thin区别(数据源)
我是今天看到tomcat数据源的配置时,想起来这个问题,刚开始还不晓得thin是什么东西! database.url=jdbc:oracle:thin:angel/oracle@192.168.55. ...
- Appium + Python 测试 QQ 音乐 APP的一段简单脚本
1. 大致流程 + 程序(Python):打开 QQ 音乐,点击一系列接收按键,进入搜索音乐界面,输入『Paradise』,播放第一首音乐. 2. Python 脚本如下 from appium im ...
- python命名空间、作用域、闭包与传值传引用
(以下内容,均基于python3) 最近在看python函数部分,讲到了python的作用域问题,然后又讲了Python的闭包问题. 在做作业的时候,我遇到了几个问题,下面先来看作业. 一. 作业1: ...
- 驱动程序分层分离概念_总线驱动设备模型_P
分层概念: 驱动程序向上注册的原理: 比如:输入子程序一个input.c作为一层,下层为Dev.c和Dir.c,分别编写Dev.c和Dir.c向上Input.c注册:如图所示 分离概念: 分离概念主要 ...
- Selenium2.0+TestNG+Ant+Jenkins自动化测试浅尝
当前常用自动化测试工具 Web自动化测试工具:QTP .selenium等 性能自动化测试工具:loadrunner.jmeter等 接口自动化测试工具:SoapUI.postman等 手机自动化测试 ...
- selenium请求豆瓣网
#请求豆瓣网 from selenium import webdriverimport timedriver = webdriver.Chrome() driver.get("http:// ...
随机推荐
- Python知识(7)--最小二乘求解
这里展示利用python实现的最小二乘的直接求解方法.其求解原理,请参考:最小二乘法拟合非线性函数及其Matlab/Excel 实现 1.一般曲线拟合 代码如下: # -*- coding:utf-8 ...
- 【windows socket+HTTPserverclient】
Windows Socket+HTTPserverclient Winsock是 Windows下套接字标准. 1.HTTP协议: HTTP ...
- 编译Opencv的GPU,利用CUDA加速
首先检查自己的机器是否支持,否则都是白搭(仅仅有NVIDIA的显卡才支持.可在设备管理器中查看) 假设不用GPU.能够直接官网下载预编译好的库 环境: 1 VS2013 2 Opencv2.4.9 3 ...
- c#中何时使用Empty()和DefalutIfEmpty()
在项目中,当我们想获取IEnumerable<T>集合的时候,这个集合有可能是null.但通常的做法是返回一个空的集合. 假设有这样一个场景:当商店不营业时,返回一个空的IEnumerab ...
- Android调用手机中的应用市场,去评分的功能实现
在我们常常使用的软件当中,我们经常可以看到在软件的设置界面,有一个功能那就是去评分的功能,只要我们一点击“去评分”就会调用手机中的应用市场软件.一开始我以为这个功能的实现是要遍历整个手机中的软件包名, ...
- 高性能 Socket 组件 HP-Socket v3.2.1 正式公布
HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C+ ...
- 为 Tomcat 安装 apr
apr 官方介绍: Tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术. APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTT ...
- Eclipse调试:改变颜色, 背景与字体大小 和xml字体调整
http://blog.csdn.net/qq272803220/article/details/7292699 eclipse操作界面默认颜色为白色.对于我们长期使用电脑编程的人来说,白色很刺激我们 ...
- SpiderMonkey的使用
基于 C 语言的 JavaScript 引擎探索 http://www.ibm.com/developerworks/cn/linux/l-cn-spidermonkey/ https://devel ...
- Go的安装和使用/卸载/升级、安装指定版本
mac: 1.brew install go默认安装最新的,更新go也是这条命令,建议这个方法,省事 2.从官网https://golang.org/dl/下载pkg包安装,官方说1.12是最后一个支 ...