VC编译OCCI的解决方案

 VC编译OCCI的解决方案


一、        安装必备软件
1、        安装Oracle客户端,其中会含有oci的库文件。
2、        安装MS Visual C++

二、        修改源文件
1、增加接口。在OcciDml.hpp中增加extern "C" int __declspec(dllexport) funA(char* a);   在OcciDml.cpp中将函数声明修改为extern "C" int __declspec(dllexport) funA(char* a)
2、修改头文件。在需要引入的所有类中,替换为
#ifndef OCCI_ORACLE
#define WIN32COMMON
#include "occi.h"
using namespace oracle::occi;
using namespace std;
#endif
否则会出现错误如下:
d:/oracle/ora92/oci/include/occicontrol.h(1132) : error C2995: 'getVector' : template function has already been defined
d:/oracle/ora92/oci/include/occicommon.h(425) : see declaration of 'getVector'

三、        设置环境变量
1、        设置INCLUDE,这可以使cl.exe在命令行时执行成功
2、        设置LIB,这可以使cl.exe在link时找到库

四、        VC设置环境
1、        在Tools->Options->Directories->INCLUDE中加入%ORACLE_HOME%/OCI/INCLUDE和%ORACLE_HOME%/PRECOMP/PUBLIC。
2、        在Tools->Options->Directories->Library files中加入%ORACLE_HOME%/OCI/lib/MSVC/VC6和%ORACLE_HOME%/OCI/lib/MSVC和%ORACLE_HOME%/precomp/lib/MSVC
3、在Project->Setting->Link->Input中增加oci.lib,oraocci10d.lib,oraSQL10.lib,msvcrt.lib
4、在Project->Setting->Link->General中选择”Ignore all default libraries”,然后修改为/NODEFAULTLIB:libcd
5、在Project->Setting->C/C++->Preprocessor中增加WIN32COMMON,_MT,_DLL
否则,会出现ResultSet的getString错误。
6、附编译后日志中的编译选项为/nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "YIELDDLL_EXPORTS" /D "WIN32COMMON" /D "_MT" /D "_DLL" /FR"Debug/" /Fp"Debug/yielddll.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
五、设置Oracle的lisener
  找到lisener.ora,修改为(ENVS="EXTPROC_DLLS=ANY")
六、部署
  拷贝到oracle的bin目录下,执行create library命令
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值