C++builder中使用第三方Delphi安装包注意事项

一、生成.hpp头文件

方法1:在bpl安装包的IDE中设置
右键bpl工程安装包->Options->Delphi Compiler->Linking->Linker output 选择Generate all C++ Buider files(including package libs)

方法2:命令行下使用dcc32

The Delphi compiler incorporates this functionality in the following switches:
-j generate a C obj
-jp generate a C++ obj
-jphn generate a C++ header file
Example:dcc32 -jphn myfile.pas
This will generate myfile.hpp
转换所有:dcc32 -jphn *.pas

建议使用方法1.

二、编译安装问题(以EhLib为例)

C++builder使用最新版EhLib库出现的问题
1.DBGridEh.hpp(2950): E2040 Declaration terminated incorrectly
调查发现DBGridEh.hpp第2950行定义了成员属性EOF,此名称与stdio.h中的宏重名导致上述错误,需要在pas源码中更改为Eof,然后再重新生成.hpp文件即可解决。
参考:http://www.borlandtalk.com/hpp-file-will-not-compile-vt111621.html

2.[ILINK32 Error] Error: Unresolved external '__fastcall Dbaxisgridseh::TCustomDBAxisGridEh::GetDataSource()'等链接问题。
没有生成.lib文件造成的,解决方法:右键bpl工程安装包->Options->Delphi Compiler->Linking->Linker output 选择Generate all C++ Buider files(including package libs)

3.[BCC32 Error] DataDriverEh.hpp(41): E2015 Ambiguity between 'ftSingle' and 'Typinfo::ftSingle'
在ftSingle前加命名空间,Db:ftSingle.

4.[ILINK32 Error] Fatal: Unable to open file 'DBGRIDEHTOOLCTRLS.OBJ'
在从高版本向低版本转换的时候出现,此时DBGRIDEHTOOLCTRLS在低版本中没有,所以要搜索#pragma link "DBGridEhToolCtrls",然后去除

5.[ILINK32 Error] Fatal: Unable to open file 'EOAS2睲埋騔????睲STREPO??.OBJ'
出现这种乱码的情况,很可能是你的lib搜索路径中包含中文名,把所有包含中文名的路径改为英文名试试。

6.RAD Studio 2007之后,安装的Delphi包也能同样适用于C++builder,而不需要单独再次安装C++builder版的。有时在C++builder的tool palette中找不到对应的包,这时先卸载这个包,关闭IDE,在注册表中搜索此包(比如Ehlib140.bpl),删除之;然后打开包工程,link选项选择Generate all C++ Buider files(including package libs),编译安装。参考:http://zachsaw.blogspot.com/2008/10/delphi-packages-not-appearing-in-c.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值