OGR注册OCI Spatial驱动以及gdal源码调试问题

        最近做的项目同时涉及到SQL 数据库和oracle数据库,想到要把以前封装好的ADO和OCI同时加载,加上oracle 和SQl 有些操作的语句不一样觉得麻烦,于是想用开源的OGR直接对数据库操作。在http://www.gdal.org/ogr/ogr_formats.html里可以查看到OGR同时支持SQL Spatial和Oracle Spatial
数据库的读写,于是开始研究用gdal中的OGR对oracle spatial数据库进行操作。
       一开始以为很快,可是在open 数据库的时候就出问题了,调试源码进去才发现OCI注册函数的开关没有打开。由于先前老大做的是栅格按理数据库的支持已经没问题所以就没再去想配置的问题,可是调试编译了一天还是无法调用注册函数。后面才发现GDAL 的栅格和矢量的开关不一样,于是找到了OGR配置文件的开关,将IFNDEF  OCIPlugin  改为 IFDEF OCIPLUgin,这样就可以注册Oracle Spatial驱动。后面的操作都很顺利
       这里主要是想提,如何在一个程序中调试调用的库文件的源码。
      通常情况将库的源码属性调试信息进行修改,以当前程序的exe为启动项。 然后将编译好的lib 文件和dll文件拷贝到当前的程序目录下。同时当前的程序的输出路径改到库的源码所在路径,总而言之要使 exe 文件和lib同步。这样就可以调用进去了。
       但是对于gdal还是花了半天的时间进行编译,一是 因为每次编译要30分钟以上,二是因为这个工程的特殊性,和其他的工程不一样,你点击生成解决方案和重新生成解决,无论你选的是不是Debug 版本,都无法调试。需要在属性里修改命令, 在makefile.vc 后面加上DEBUG=1就OK了。查看cmake文件,你会发现     makefile.vc 默认的为Release版本,必须在后面加DEBUG=1 才是Debug版本。 如果哪天你和我一样点Debug都无法进行代码的调试话,那不妨换个思路,查看真正控制的是不是配置文件。


转载自:https://blog.csdn.net/piqi8856/article/details/8164460

You may also like...