在C++Builder中安装odac组件

今天接手一个很久前开发的c++builder程序,要试运行,结果编译发现提示无法找到Ora.hpp文件,再细查发现系统中连接数据库多次调用了TOraSession,TOraQuery等类,经过查询,知道是oadc中的,所以上网找了odac插件,再几番百度,发现关于安装odac插件到cb6中的资料很少,可能现在很少人用该平台开发了,唯一找到的还是英文的,当然也不影响阅读,但不一定可以完全按照其中的步骤就安装成功,中间可能因为本机的原因,有一些动态库缺失,需要手工删除*.bpk中的动态库名。

那么下面就讲下我的安装过程吧,我使用cb6做的编译,英文博客中有说可以用批处理编译的,但我没有成功,也没有继续试验。

我下载的是Oracle.Data.Access.Components.v6.80.0.47.FS.forD5-D2009,进入Oracle.Data.Access.Components.v6.80.0.47.FS.forD5-D2009\Source\CBuilder6,按以下顺序编译:

(1)dac60.bpk;


(2)dacvcl60.bpk;


(3)dcldac60.bpk;


(4)odac60.bpk;之前下载过几个版本该文件就无法编译,有错误,说是缺少某个动态库,这一各没出问题,非常兴奋




(5)odacvcl60.bpk;结果没高兴完,这一步又出错了,不能再这样再换版本了,于是想到以前做cb6开发时,可以将找不到的动态库在工程文件中删除,于是用文本编辑器打开对应的bpk文件。



用文本编辑器打开odacvcl60.bpk,找到QRPT.LIB删除

删除以后,果然成功编译





(6)dclodac60.bpk

这一步也是最后一步,除了跟之前一样编译外,还要再做一步安装(install)到cb6中





安装全部完成之后,可以修改一下路径工程选项中的Directories中的路径



全部做完,这时可以看到


1)VsDll为vs2010工程,编译生成动态库。 2)BCBCall为bcb工程,调用动态库 3)Viewdll.exe为查看DLL导出文件的工具。 注意事项一: VSDll里面有一个 KpHttps.def LIBRARY "KpHttps" EXPORTS InitKpHttp Project > Properties... > Linker > Input > Module Definition File 里面加入你刚才的KpHttps.def文件,重新编译就行了。出来的InitKpHttp函数前面没有下划线,后面没有@8或者@ABCDEF之类的。 注意事项二: 用C++Builder的implib工具生成DLL对应的lib文件。如:implib xx.lib xxx.dll。 生成lib文件之后,C++Builder便可以使用这个lib文件了。 注意事项三: 文件头的声明应该完全一样,否则(呵呵),会出现链接错误。 #ifdef DLL_API #define DLL_API extern "C" _declspec(dllexport) #else #define DLL_API extern "C" _declspec(dllimport) #endif #ifdef __cplusplus extern "C" { #endif DECLDIR int __stdcall InitKpHttp(void); DECLDIR int UnInitKpHttp(void); DECLDIR int KpHttpRequest(char *strurl,char *strhost,char *strresult,int &resultle;); DECLDIR int KpHttpsRequest(char *strurl,char *strhost,char *strresult,int &resultle;); DECLDIR int KpHttpPost(char *strurl,char *strhost,char *strPost,int postlen,char *strresult,int &resultle;); DECLDIR int KpHttpsPost(char *strurl,char *strhost,char *strPost,int postlen,char *strresult,int &resultle;); DECLDIR int KpUpLoadFile(char *strurl,char *strhost,char *filebuf,int filelen,char *strresult,int &resultle;); DECLDIR int KpDownLoadFile(char *strurl,char *strhost,char *filebuf,int &filelen;,char *strresult,int &resultle;); #ifdef __cplusplus } #endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值