免费注册 查看新帖 |

Chinaunix

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

救命啊!occi编译连接问题。。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-27 11:15 |只看该作者 |倒序浏览
由于开发oracle连接中间件的需要,要使用到occi。连接时却总是报错。。。
环境:aix53、gcc4.2、oralce10g
编译一个简单的demo时报错
ld: 0711-317 ERROR: Undefined symbol: .oracle:cci::Environment::createEnvironment(oracle:cci::Environment::Mode, void*, void* (*)(void*, unsigned long), void* (*)(void*, void*, unsigned long), void (*)(void*, void*))
ld: 0711-317 ERROR: Undefined symbol: .oracle:cci::Environment::terminateEnvironment(oracle:cci::Environment*)
ld: 0711-317 ERROR: Undefined symbol: typeinfo for oracle:cci::SQLException
collect2: ld returned 8 exit status

考虑可能是occi库装的不全,从oracle官方网站下载了一个instantclient_11_2,解压安装后,引入编译还是同样的问题。。。

#include <iostream>
#include <occi.h>

using namespace std;
using namespace oracle:cci;

int main()
{
        Environment *env=Environment::createEnvironment();//初始化occi环境
       
        //用户输入密码,名字,数据库
        string name;
        string pwd;
        string dbname;
        cout<<"请输入用户名,密码及数据库连接串";
        cin>>name>>pwd>>dbname;

        try
        {
                Connection *conn=env->createConnection(name,pwd,dbname);//创建到oracle的连接
                cout<<"您已成功连接数据库!"<<endl;
                env->terminateConnection(conn);//关闭连接
        }
        catch(SQLException e)
        {
                cout<<e.what()<<endl;//捕获错误
        }
       
        Environment::terminateEnvironment(env);//关闭环境
       
        return 0;
}

论坛徽章:
0
2 [报告]
发表于 2010-07-27 11:21 |只看该作者
将libocci*.so, libclntsh*.so 拷贝到/usr/lib下, 然后gcc加上 -locci -lclntsh  试试

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
3 [报告]
发表于 2010-07-27 11:44 |只看该作者
看手册吧,我之前下载的不是这个,是那个OCCI for Linux/Windows
http://www.oracle.com/technology/tech/oci/occi/index.html

论坛徽章:
0
4 [报告]
发表于 2010-07-27 11:45 |只看该作者
谢谢,我试试

论坛徽章:
0
5 [报告]
发表于 2010-07-27 11:52 |只看该作者
回复 1# caicai15


    occi?   莫非是oci上面又封装了一层的东东???
instant client 的配置过程如下:   
http://hi.baidu.com/mgqw/blog/item/9b36c1167592304d21a4e9e1.html

这个是OCI的入门
http://hi.baidu.com/mgqw/blog/item/9b36c1166407c14d20a4e99e.html

论坛徽章:
0
6 [报告]
发表于 2010-07-27 11:53 |只看该作者
回复  caicai15


    occi?   莫非是oci上面又封装了一层的东东???
instant client 的配置过程如 ...
mgqw 发表于 2010-07-27 11:52



    哥们儿,you奥特曼了。。。

论坛徽章:
0
7 [报告]
发表于 2010-07-27 11:56 |只看该作者
回复 6# rain_fish


    我那会连oracle都是直接查询oci的底层函数,  然后自己根据应用封装的……

论坛徽章:
0
8 [报告]
发表于 2010-07-27 11:57 |只看该作者
将libocci*.so, libclntsh*.so 拷贝到/usr/lib下, 然后gcc加上 -locci -lclntsh  试试
rain_fish 发表于 2010-07-27 11:21



    不行,我试过了。。
wps@10.109.214.7 : /asiainfo/wps/instantclient_10_2> ls
classes12.jar    libnnz10.so      libociei.so      ojdbc14.jar      ttt
libclntsh.a      libocci.a        libocijdbc10.so  sdk
wps@10.109.214.7 : /asiainfo/wps/instantclient_10_2> nm -gA libocci.a > ttt
wps@10.109.214.7 : /asiainfo/wps/instantclient_10_2> grep createEnvironment ttt
wps@10.109.214.7 : /asiainfo/wps/instantclient_10_2> nm -gA libclntsh.a  > ttt
wps@10.109.214.7 : /asiainfo/wps/instantclient_10_2> grep createEnvironment ttt
查看了引用的instantclient的库文件,确实找不到createEnvironment 。。。
不管是instantclienth还是企业版,都是这个问题。。。

论坛徽章:
0
9 [报告]
发表于 2010-07-27 13:39 |只看该作者
不行,我试过了。。
: /asiainfo/wps/instantclient_10_2> ls
classes12.jar    libnnz10.so  ...
caicai15 发表于 2010-07-27 11:57



    仔细查查是什么原因,我就是这么做的,也没出现这样的错误。。。
另外,哥们儿是在亚信工作吧?

论坛徽章:
0
10 [报告]
发表于 2010-07-27 14:07 |只看该作者
仔细查查是什么原因,我就是这么做的,也没出现这样的错误。。。
另外,哥们儿是在亚信工作吧?
rain_fish 发表于 2010-07-27 13:39



    原来是同事哈,^_^。我感觉是g++编译器和occi库不兼容导致的,请问你那边用的是什么编译器?。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP