| 订阅 | 在线投稿
分享
 
 
当前位置: 王朝网络 >> oracle >> Oracle 9i中OCCI在VC6下不能DEBUG的问题
 

Oracle 9i中OCCI在VC6下不能DEBUG的问题

2008-08-15 05:14:02 编辑來源:互联网 繁體版 评论
 
 
  问题: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{

  cout <getString(i+1) <<'\t';

  }

  cout <}

  这个程序段中,为什么第一行中的NUMBE类型都正常的读出了,但是从第二行开始就不正确了呢

  如果我在while()前先next()几次,仍然是当前循环中的第一行的所有的number类型都正常读出,从第二行开始就又不正常了

  解决方法如下:

  vc6的那个默认的步骤debug肯定行不通。因为OCCI不按这种配置来compile.

  步骤如下:

  1. 确保oci.lib, oraocci9.lib在你的lib路径下边,确保oci/include在你的include路径下边

  2. 确保有下边的宏声明:(#define WIN32COMMON)

  #ifdef WIN32COMMON

  template

  void getVector( ResultSet *rs, unsigned int index,

  OCCI_STD_NAMESPACE::vector< T > &vect) ;

  #else

  template

  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及以后的补丁,不然,你几乎无法正常使用。

  如果有再碰到类似问题,请及时回馈。

  附加注释:

  可以看看$ORACLE_HOME\oci\samples下的make.bat中对应于OCCI的相关内容:

  :occimakeobj

  ott userid=scott/tiger intype=%1.typ outtype=%1out.type code=cpp hfile=%1h.h cppfile=%1o.cpp mapfile=%1m.cpp attraccess=private

  cl -GX -DWIN32COMMON -I. -I%ORACLE_HOME%\oci\include -I. -D_DLL -D_MT %1.cpp %1m.cpp %1o.cpp /link /LIBPATH:%ORACLE_HOME%\oci\lib\msvc oci.lib msvcrt.lib msvcprt.lib oraocci9.lib /nod:libc

  goto end

  :occimake

  cl -GX -DWIN32COMMON -I. -I%ORACLE_HOME%\oci\include -I. -D_DLL -D_MT %1.cpp /link /LIBPATH:%ORACLE_HOME%\oci\lib\msvc oci.lib msvcrt.lib msvcprt.lib oraocci9.lib /nod:libc

  goto end

  至于为什么要/nod:libc,为什么要将msvcrt.lib msvcprt.lib 放到中间,那是因为oracle的occi库在build时依赖顺序不一样。你可以上msdn上查查msvcrt.lib和msvcprt.lib是干嘛用的。

  在侯捷的win32多线程编程里也有相关描述。
 
 
 
 
上一篇《个人经验总结:Oracle数据库SCN号详解》
下一篇《揭开Oracle 10G手工创建数据库的神秘面纱》
 
 
 
 
 
 
 
 
 
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

如何磨出破洞牛仔裤?牛仔裤怎么剪破洞?

把牛仔裤磨出有线的破洞 1、具体工具就是磨脚石,下面垫一个硬物,然后用磨脚石一直磨一直磨,到把那块磨薄了,用手撕开就好了。出来的洞啊很自然的。需要猫须的话调几...

我就是扫描下图得到了敬业福和爱国福

先来看下敬业福和爱国福 今年春节,支付宝再次推出了“五福红包”活动,表示要“把欠大家的敬业福都还给大家”。 今天该活动正式启动,和去年一样,需要收集“五福”...

冰箱异味产生的原因和臭味去除的方法

有时候我们打开冰箱就会闻到一股异味,冰箱里的这种异味是因为一些物质发出的气味的混合体,闻起来让人恶心。 产生这些异味的主要原因有以下几点。 1、很多人有这种习...

 
 
 
问题: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{ cout <getString(i+1) <<'\t'; } cout <} 这个程序段中,为什么第一行中的NUMBE类型都正常的读出了,但是从第二行开始就不正确了呢 如果我在while()前先next()几次,仍然是当前循环中的第一行的所有的number类型都正常读出,从第二行开始就又不正常了 解决方法如下: vc6的那个默认的步骤debug肯定行不通。因为OCCI不按这种配置来compile. 步骤如下: 1. 确保oci.lib, oraocci9.lib在你的lib路径下边,确保oci/include在你的include路径下边 2. 确保有下边的宏声明:(#define WIN32COMMON) #ifdef WIN32COMMON template void getVector( ResultSet *rs, unsigned int index, OCCI_STD_NAMESPACE::vector< T > &vect) ; #else template 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及以后的补丁,不然,你几乎无法正常使用。 如果有再碰到类似问题,请及时回馈。 附加注释: 可以看看$ORACLE_HOME\oci\samples下的make.bat中对应于OCCI的相关内容: :occimakeobj ott userid=scott/tiger intype=%1.typ outtype=%1out.type code=cpp hfile=%1h.h cppfile=%1o.cpp mapfile=%1m.cpp attraccess=private cl -GX -DWIN32COMMON -I. -I%ORACLE_HOME%\oci\include -I. -D_DLL -D_MT %1.cpp %1m.cpp %1o.cpp /link /LIBPATH:%ORACLE_HOME%\oci\lib\msvc oci.lib msvcrt.lib msvcprt.lib oraocci9.lib /nod:libc goto end :occimake cl -GX -DWIN32COMMON -I. -I%ORACLE_HOME%\oci\include -I. -D_DLL -D_MT %1.cpp /link /LIBPATH:%ORACLE_HOME%\oci\lib\msvc oci.lib msvcrt.lib msvcprt.lib oraocci9.lib /nod:libc goto end 至于为什么要/nod:libc,为什么要将msvcrt.lib msvcprt.lib 放到中间,那是因为oracle的occi库在build时依赖顺序不一样。你可以上msdn上查查msvcrt.lib和msvcprt.lib是干嘛用的。 在侯捷的win32多线程编程里也有相关描述。
󰈣󰈤
 
 
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
温柔美女韩雪写真
杨幂全新写真
网易红人PLMM草梅队长
河智苑Compagna09春装
看 这就是我的学校
惠山古迹区
雪后看花仙
元宵烟火
 
>>返回首页<<
 为你推荐
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 热帖排行
 
 
 
 
©2005- 王朝网络 版权所有