通过oci连接oracle,出错

a86783700 2015-11-17 04:33:12
因为需求需要远程连接服务器中oracle进行操作,同时客户端不允许安装oracle,故选择通过oci连接oracle。
//ocicaozuo.h
#include <oci.h>
#pragma comment(lib,"oci.lib")
#pragma comment(lib,"oraocci11.lib")
#pragma comment(lib,"kpucb.lib")
#pragma comment(lib,"ociw32.lib")


//ocicaozuo.cpp
sword swResult = OCIEnvCreate(&env,OCI_DEFAULT,NULL,NULL,NULL,NULL,0,NULL);
if (swResult != OCI_SUCCESS && swResult != OCI_SUCCESS_WITH_INFO)
{
TRACE("Oracle init server error\n");
return false;
}
OCIHandleAlloc((dvoid *)env,(dvoid **)&err,OCI_HTYPE_ERROR,(size_t)0,(dvoid **)0);
OCIHandleAlloc((dvoid *)env,(dvoid **)&serv,OCI_HTYPE_SERVER,(size_t)0,(dvoid **)0);

string sever = "orcl241";
if (OCIServerAttach(serv,err,(text *)sever.c_str(),strlen(sever.c_str()),0) != OCI_SUCCESS)
{
int errcno;
char errbuf[512]= "";
sb4 errcode;

//获取错误指针和OCI错误代码
OCIErrorGet((dvoid *)err,(ub4)1,(text *)NULL,&errcode,(ub1*)errbuf,(ub4)sizeof(errbuf),OCI_HTYPE_ERROR);
errcno = errcode;

TRACE("Oracle server attach error\n");
OCIHandleFree((dvoid *)env,OCI_HTYPE_ENV);
OCIHandleFree((dvoid *)serv,OCI_HTYPE_SERVER);
OCIHandleFree((dvoid *)err,OCI_HTYPE_ERROR);
return false;
}
TRACE("Oracle server attach success");
return true;


运行显示:
1>OracleOci.obj : error LNK2019: 无法解析的外部符号 _OCIHandleFree,该符号在函数 "public: bool __thiscall OracleOci::InitialiServ(void)" (?InitialiServ@OracleOci@@QAE_NXZ) 中被引用
1>OracleOci.obj : error LNK2019: 无法解析的外部符号 _OCIErrorGet,该符号在函数 "public: bool __thiscall OracleOci::InitialiServ(void)" (?InitialiServ@OracleOci@@QAE_NXZ) 中被引用
1>OracleOci.obj : error LNK2019: 无法解析的外部符号 _OCIServerAttach,该符号在函数 "public: bool __thiscall OracleOci::InitialiServ(void)" (?InitialiServ@OracleOci@@QAE_NXZ) 中被引用
1>OracleOci.obj : error LNK2019: 无法解析的外部符号 _OCIHandleAlloc,该符号在函数 "public: bool __thiscall OracleOci::InitialiServ(void)" (?InitialiServ@OracleOci@@QAE_NXZ) 中被引用
1>OracleOci.obj : error LNK2019: 无法解析的外部符号 _OCIEnvCreate,该符号在函数 "public: bool __thiscall OracleOci::InitialiServ(void)" (?InitialiServ@OracleOci@@QAE_NXZ) 中被引用


环境设置
include:
D:\oracle\product\11.2.0\dbhome_1\OCI\include
lib:
D:\oracle\product\11.2.0\dbhome_1\OCI\lib\MSVC
D:\oracle\product\11.2.0\dbhome_1\OCI\lib\MSVC\vc9

弄了一整天了,实在找不到原因了
...全文
407 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
a86783700 2015-11-18
  • 打赏
  • 举报
回复
嗯 我去检查下 解决后关帖给答复
a86783700 2015-11-18
  • 打赏
  • 举报
回复
问题解决, oracle 11gR2 所使用为64位的版本, 将开发环境修改为64位即编译通过
paschen 版主 2015-11-17
  • 打赏
  • 举报
回复
肯定是库文件没搞对,导致链接时错误,具体原因不好分析,楼主仔细检查一下
a86783700 2015-11-17
  • 打赏
  • 举报
回复
在其他帖子里面已经看到赵4老师的回答了,但是我所有的都添加进去了 还是不行
赵4老师 2015-11-17
  • 打赏
  • 举报
回复
项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项 项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项
a86783700 2015-11-17
  • 打赏
  • 举报
回复
有没有大大帮帮忙

65,170

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧