Oracle9i中OCCI在VC6下不能DEBUG的问题及解决方法
2006-08-20 17:13
232 查看
前段时间,在csdn论坛上看到有人问OCCI在VC6下不能debug的问题,这个确实有解决方法。
论坛原帖大致内容如下:
winXP VC6-sp6 oracle9.2
是不是OCCI的库有 开发版和发行版 之分,所以用发行版的oraocci9.lib不能做debug版的程序,string或者vector在释放时总会报错
Statement类的setXXX()函数为什么我在使用的时候不管用呢?
文档说NUMBER类型也可以和string转换
在
while(rs->next())
{
for(i=0; i<colsize; i++)
{
cout <<rs->getString(i+1) <<'/t';
}
cout <<endl;
}
这个程序段中,为什么第一行中的NUMBE类型都正常的读出了,但是从第二行开始就不正确了呢
如果我在while()前先next()几次,仍然是当前循环中的第一行的所有的number类型都正常读出,从第二行开始就又不正常了
在三年以前我曾经使用OCCI开发过一些底层应用,其基本的解决方法如下:
vc6的那个默认的步骤debug肯定行不通。因为OCCI不按这种配置来compile.
步骤如下:
1. 确保oci.lib, oraocci9.lib在你的lib路径下边,确保oci/include在你的include路径下边
2. 确保有下边的宏声明:(#define WIN32COMMON)
#ifdef WIN32COMMON
template <class T>
void getVector( ResultSet *rs, unsigned int index,
OCCI_STD_NAMESPACE::vector< T > &vect) ;
#else
template <class T>
void getVector( ResultSet *rs, unsigned int index,
OCCI_STD_NAMESPACE::vector< T* > &vect) ;
#endif
3.这一步最重要,要与VC6的默认配置相区别:
在project settings的WIN32 DEBUG的"link"下边,将Category: Input下边的
Object/library modules:
改为kernel32.lib user32.lib oci.lib msvcrt.lib msvcprt.lib oraocci9.lib (顺序不能错)
同时,勾上Ignore all default libraries,
并在Ignore libraries上边填上边libc.lib
这要build出来以来,执行是不会出现堆错误的。并且可以debug。
使用occi与其它库进行集成时,尤其要注意这些配置,有的时候甚至出现不相容的情况。所以要根据实际情况进行选择。
当然,你可以使用MTD, MD方式来build。
到了VC7以后,OCCI相应的要求就少多了。
linux下当初OCCI是有很多bug的,除非打了9205及以后的补丁,不然,你几乎无法正常使用。
如果有再碰到类似问题,请及时回馈。
论坛原帖大致内容如下:
winXP VC6-sp6 oracle9.2
是不是OCCI的库有 开发版和发行版 之分,所以用发行版的oraocci9.lib不能做debug版的程序,string或者vector在释放时总会报错
Statement类的setXXX()函数为什么我在使用的时候不管用呢?
文档说NUMBER类型也可以和string转换
在
while(rs->next())
{
for(i=0; i<colsize; i++)
{
cout <<rs->getString(i+1) <<'/t';
}
cout <<endl;
}
这个程序段中,为什么第一行中的NUMBE类型都正常的读出了,但是从第二行开始就不正确了呢
如果我在while()前先next()几次,仍然是当前循环中的第一行的所有的number类型都正常读出,从第二行开始就又不正常了
在三年以前我曾经使用OCCI开发过一些底层应用,其基本的解决方法如下:
vc6的那个默认的步骤debug肯定行不通。因为OCCI不按这种配置来compile.
步骤如下:
1. 确保oci.lib, oraocci9.lib在你的lib路径下边,确保oci/include在你的include路径下边
2. 确保有下边的宏声明:(#define WIN32COMMON)
#ifdef WIN32COMMON
template <class T>
void getVector( ResultSet *rs, unsigned int index,
OCCI_STD_NAMESPACE::vector< T > &vect) ;
#else
template <class T>
void getVector( ResultSet *rs, unsigned int index,
OCCI_STD_NAMESPACE::vector< T* > &vect) ;
#endif
3.这一步最重要,要与VC6的默认配置相区别:
在project settings的WIN32 DEBUG的"link"下边,将Category: Input下边的
Object/library modules:
改为kernel32.lib user32.lib oci.lib msvcrt.lib msvcprt.lib oraocci9.lib (顺序不能错)
同时,勾上Ignore all default libraries,
并在Ignore libraries上边填上边libc.lib
这要build出来以来,执行是不会出现堆错误的。并且可以debug。
使用occi与其它库进行集成时,尤其要注意这些配置,有的时候甚至出现不相容的情况。所以要根据实际情况进行选择。
当然,你可以使用MTD, MD方式来build。
到了VC7以后,OCCI相应的要求就少多了。
linux下当初OCCI是有很多bug的,除非打了9205及以后的补丁,不然,你几乎无法正常使用。
如果有再碰到类似问题,请及时回馈。
相关文章推荐
- Oracle9i中OCCI在VC6下不能DEBUG的问题及解决方法
- Oracle9i中OCCI在VC6下不能DEBUG的问题及解决方法(转贴)
- VC6编译的Debug版本程序中存在的问题及解决方法
- Android开发中Debug certificate expired问题解决方法
- 使用正式签名打包APK,打开debug模式报错的问题解决方法
- Keil中 "STARTUP.A51" SET (SMALL) DEBUG EP问题解决方法
- [VS2008] Debug版本程序发布后 由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题 解决方法
- NS2安装以及configure --enable-debug后的问题解决方法
- 问题解决Android studio遇到 java.lang.OutOfMemoryError: GC app:transformClassesWithDexForDebug解决方法 以及gradle优化
- VC6和VS2003 转换到VS2005 时可能会遇到的问题以及解决方法
- PD导入Model到Oracle9i遇到的问题及其解决方法
- VC6 和 VS2003 转换到VS2005 时可能会遇到的问题以及解决方法
- Oracle卸载方法和在XP下装Oracle9i遇到安装磁盘交换区没有足够空间的问题解决办法
- [Error generating final archive: Debug certificate expired on …]问题解决方法
- 从vc6升级到vc7的一些问题及解决方法
- 在同一台机器上安装Oracle9i与Oracle10g遇到的问题和解决方法(Windows xp 操作系统)
- 解决部分在Debug模式下程序没问题但是Release模式下出现问题的方法
- VC6安装SP6补丁的方法(超完整!不看后悔) 也即解决VC6编译链接问题最完整的方法!
- 从vc6升级到vc7的一些问题及解决方法
- PD导入Model到Oracle9i遇到的问题及其解决方法