免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1993 | 回复: 2
打印 上一主题 下一主题

请教关于OCI编程问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-03-18 11:14 |只看该作者 |倒序浏览
在Solaris8下安装了oracle8.1.6,并编译用OCI编写的程序,其中使用了很多的oci函数,包括Direct Path API,但联接时,出现以下提示:
g++ -c  -I/export/home/opt/oracle/8.1.6/rdbms/demo -I/export/home/opt/oracle/8.p
g++ -g -o a.out test.o -L/export/home/opt/oracle/8.1.6/lib -lclntsh  -L/export/i
/export/home/gyq/zy/dbapi/lib/libdbapi.a(OraConnection.o): In function `ODB::Or:
OraConnection.o(.text+0x8704): undefined reference to `OCIDirPathColArrayReset'
OraConnection.o(.text+0x884: undefined reference to `OCIDirPathStreamReset'
OraConnection.o(.text+0x8b94): undefined reference to `OCIDirPathFlushRow'



看起来是缺少某个库文件,但我在编译时已加入了-L/export/home/opt/oracle/8.1.6/lib -lclntsh
如果将Direct Path的调用去掉,则连接成功,请各位高手不吝赐教

论坛徽章:
0
2 [报告]
发表于 2003-03-20 11:09 |只看该作者

请教关于OCI编程问题

各位老哥,谁能帮帮我啊?

我快急死了!!!

论坛徽章:
0
3 [报告]
发表于 2004-02-04 11:11 |只看该作者

请教关于OCI编程问题

我刚开始接触OCI方面的内容,是在linux下,用C编程,操作ORACLE库,我试着安照资料的介绍编写的一点试验程序,编译通不过。我主要是完成用oci来操纵oralce数据库,能方便的操纵数据库里面的表,如select,insert,update等。请帮我列一下所用的函数和详细使用方法,以及需要的库文件等知识,若有源文件,那是最好不过了,本人十二万分的感谢
我练习用OCI编程如下:oci_login1.c
/*OCI与ORACLE进行连接*/

#include <stdio.h>;
#include <string.h>;
#include <ocidfn.h>;
#include <oci.h>;
#include <ociapr.h>;
#include <oratypes.h>;
#include <ocidem.h>;

/*建立登录数据区*/
Lda_Def lda; /*LDA_DEF lda;*/
/*建立宿主数据区*/
ub1 hda[256];
/*建立光标数据区*/
Cda_Def cda; /*CDA_DEF cda;   cda_def cda;*/
/*初始化数据库名和口令*/
text *uid="dbtest/dbtest";
/*定义一个串变量sql语句,并用PL/SQL块来初始化它*/
char sql_statament[]="select * from jq;";
main()
{
  /*连接数据库*/
  //if (orlon(&lda,&hda,uid,-1,(text*)0,-1,0))
  if (olon(&lda,"dbtest/dbtest",-1,0,-1,0))
  {   /*连接失败*/
    //error_handler(&lda);
    printf("Cannot connect to ORACLE as dbtest/dbtest\n";
    //exit(EXIT_FAILURE);
    exit(1);
  }
  /*打开光标*/
  if (oopen(&lda,&cda,0,-1,-1,0,-1))
  {  /*打开光标失败 */
     printf("Cannot open cursor, exiting......\n";
     ologof(&lda);
     exit(1);
  }

  /*分析SQL语句*/
  if (oparse(&cda,sql_statament,-1,1,1))
     oci_error();    /*分析SQL失败*/

  /*执行PL/SQL块*/
  if (oexec(&cda))
     oci_error();

  /*关闭光标*/
  if (oclose(&cda))
      exit(1);

  /*结束处理,退出ORACLE*/
  if (ologof(&lda))
     exit(1);
  exit(0);
}

编译:gcc -o oci oci_login1.c -I/opt/oracle/product/9.2.0/rdbms/demo -I /opt/oracle/product/9.2.0/rdbms/public/
出现错误
/tmp/ccxeEYyW.o: In function `main':
/tmp/ccxeEYyW.o(.text+0x1c): undefined reference to `olon'
/tmp/ccxeEYyW.o(.text+0x5c): undefined reference to `oopen'
/tmp/ccxeEYyW.o(.text+0x82): undefined reference to `ologof'
/tmp/ccxeEYyW.o(.text+0xa: undefined reference to `oparse'
/tmp/ccxeEYyW.o(.text+0xb6): undefined reference to `oci_error'
/tmp/ccxeEYyW.o(.text+0xc3): undefined reference to `oexec'
/tmp/ccxeEYyW.o(.text+0xd1): undefined reference to `oci_error'
/tmp/ccxeEYyW.o(.text+0xde): undefined reference to `oclose'
/tmp/ccxeEYyW.o(.text+0x101): undefined reference to `ologof'
collect2: ld returned 1 exit status

我用此法编译demo下的cdemo1.c,出现类似的问题。好像我的编译不正确,我非常急用,恳请能尽快给予帮助!多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP