bcb 6.0工程平移C++ builder xe8环境

bcb 6.0升级到xe8时,会遇到一些问题,下面我把我遇到的问题列出来,有的我也不知道答案:

1.打开bcb 6.0时,报"没有注册类"错误

我在一台笔记本上装了xe8,但没有全装,android、IOS、osx没有选择装,只要C++ x64的,装完后打开bcb 6.0工程,能打开正常;但在另一台台式电脑上,我全装了XE8,结果打开bcb 6.0时,总是报"没有注册类"错误,不管我第三插件重新安装还是把pbl及lib文件拷到XE8目录下,都不能打开,后面我把XE8卸了,重新安装,这次安装没有全装,只安装了C++的,打开bcb 6.0工程正常;


2.用XE8编译bcb 6.0时,改变最大的问题是宽字符的问题

   原字符串String类型默认为UnicodeString;

   系统接口很多使用w_chart*而不是chart *,这涉及AnsiString或char *转w_chart *,这里可以使用WideString,  如:AnsiString转w_chart: WideString(AnsiString).c_bstr();


3. 对系统头文件的引用有改动

如:#include <vcl>,这种会报“Unable to open include file 'vcl'”,要改成#include <vcl.h>;


4. 对界面事件函数修改

如果参数为char *的要改成System::WideChar*,如果是AnsiString 要改成 System::UnicodeString,比如:void __fastcall BntKeyPress(TObject *Sender, char &Key)要改成void __fastcall BntKeyPress(TObject *Sender, System::WideChar &Key),BntKeyPress为OnKeyPress函数;


6.出现错误“[bcc32 Error] Winapi.ShlObj.hpp(596): E2257 , expected”

是在ShlObj.hpp下面行里报错:

typedef _tagCOMPSTATEINFO TCompStateInfo;

typedef _tagIE4COMPONENT TIE4Component;

typedef _tagCOMPONENT TShComponent;

    这错误应该在哪重声明了,在cpp里把ShlObj.hpp注释掉


6.对于老的delphi程序,要重新编译安装比较麻烦

i.重新建新packge工程;

ii.[dcc32 Fatal Error] ToolsAPI.pas(18): F2613 Unit 'DockForm' not found.在compiling->other options->Additional options to passs to the compiler要增加-LUDesignIDE,参加点击打开链接

iii.对于找不到的包,可能要另外目录搜索,如:比如没有发现DesignIntf,这要把“C:\Program Files (x86)\Embarcadero\Studio\16.0\source\ToolsAPI”加进去;

iiii.修改并成功后,安装可能还不能成功,比如:can t load package package 'adortl220',这时要在关联adortl.dcp文件,方法为点击Requires->Add Refeence把这个文件加进去


7.自动转换问题

对于前置声明的子类不能自动转成基类,要强制转化;以及void *转换时要强制转化才行


8.链接的时候出现的错误

错误一:

[ilink32 Error] Error: Unresolved external 'System::__linkproc__ __fastcall LStrAsg(System::AnsiStringT<0>&, System::AnsiStringT<0>)' referenced from C:\PROGRAM FILES (X86)\EMBARCADERO\STUDIO\16.0\LIB\WIN32\RELEASE\VCLE.LIB|System_t_win32
[ilink32 Error] Error: Unresolved external 'System::__linkproc__ __fastcall LStrCat(System::AnsiStringT<0>&, System::AnsiStringT<0>)' referenced from C:\PROGRAM FILES (X86)\EMBARCADERO\STUDIO\16.0\LIB\WIN32\RELEASE\VCLE.LIB|System_t_win32

.......

解决方法:勾上 "Project > Options > C++Linker > Link with Delphi Runtime Library (...)"


错误二:

 Unresolved external 'Vcl::Forms::Application' referenced

解决方法:去掉勾选“Project > Options >Packages->Runtime Packages->Link with runtime packages”


错误三:

[ilink32 Error] Fatal: Unable to open file 'STLPMTI.LIB'

这种问题有的说是使用到了旧的库才会链接这东西,但把依赖的库一个个去掉,还是有这个问题。后面是通过重新建一个新的工程重新把文件添加进去解决的


错误四:

[ILINK32 Error] Error: Unresolved external '__fastcall Xmldoc::NewXMLDocument(System::WideString)' 

解决方法:在CBuilder2007的IDE中菜单上的Project-->Add to project-->找到$(BCB)\lib\release\xmlrtl.lib文件确定编译就行了


"Project > Options > C++Linker > Link with Dynamic RTL" - See more at: http://codeverge.com/embarcadero.cppbuilder.cpp/unresolved-external-errors-when-up/2019889#sthash.t89If6r9.dpuf
"Project > Options > C++Linker > Link with Dynamic RTL" - See more at: http://codeverge.com/embarcadero.cppbuilder.cpp/unresolved-external-errors-when-up/2019889#sthash.t89If6r9.dpuf
Make sure you are also disabling the "Project > Options > C++Linker > Link with Dynamic RTL" option as well - See more at: http://codeverge.com/embarcadero.cppbuilder.cpp/unresolved-external-errors-when-up/2019889#sthash.t89If6r9.dpuf

9.有时会报系统头文件的错

比如:vcl.h打不开,以及如下错误:

[bcc32 Error] iosfwd(129): E2102 Cannot use template 'streampos' without specifying specialization parameters

解决方法:关闭重启bcb



10.后续…………



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值