c++builderdelphi的简单介绍
本文目录一览:
- 1、如何使用C++Builder编译Delphi使用Obj文件
- 2、C++Builder和VC,Delphi哪个容易学,功能又强大
- 3、如何在C++Builder中使用Delphi控件
- 4、求教C++Builder 给delphi 提供静态库 的方法
- 5、c++ builder 和Delphi偏向应用哪个更好
如何使用C++Builder编译Delphi使用Obj文件
一直以来,Delphi 都可以用命令行 dcc32 ProjectName.dpr 对项目进行编译链接,非常方便,Delphi对项目文件的参数配置处理的很简单,便于阅读处理起来也很直观,编译的中间文件也很简单(dcu,dcp)。
而C++Builder就没那么幸运了,因为包含了C++的特征,各种编译的中间文件:lib,obj,res,map,tds。后来新版又增加了一些预编译文件:ilc,ild,ilf,...,pch,#00,...等等等等,各种搜索路径(Include Path,Library Path,Browse Path...),要是用bcc32及ilink32手工进行编译链接,命令的参数都足够写上大半天。幸好,在旧版C++Builder中,如果要用命令行编译BCB项目,只要将bpr文件转换为mak文件,再使用make命令进行编译链接也比较方便,不需要过多的处理:
[plain] view plaincopyprint?
bpr2mak -oProject1.mak Project1.bpr
make -fProject1.mak
自从Delphi/C++Builder开始使用 MSBuild* 编译系统后(好像是RAD Studio 2006开始,具体忘记了),Delphi项目在保存为dpr的同时,也会保存一份dproj的项目文件,dpr依旧沿用旧格式,dproj 则以MSBuild规范以XML格式保存,除了可以用旧方式命令行编译dpr外,也可以用:
[plain] view plaincopyprint?
msbuild.exe /t:Rebuild /p:Config=Debug ProjectName.dproj
进行编译,但msbuild必须设定一些环境变量,RAD Studio自带了一个命令行工具已经做好了这些,其实就是设定了以下几个环境变量($(BDS)\bin\rsvars.bat):
[plain] view plaincopyprint?
@SET BDS=C:\Embarcadero\RAD Studio\7.0
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\7.0
@SET FrameworkDir=C:\Windows\www.introzo.com\Framework\v2.0.50727
@SET FrameworkVersion=v2.0.50727
@SET FrameworkSDKDir=
@SET PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH%
@SET LANGDIR=EN
C++Builder则又更杯具了一些,bpr2mak.exe工具已经没有了,所以只能采用MSBuild进行命令行编译。更加杯具的是,随着Delphi和BCB被多次转卖收购,新版本的发布似乎总会有各种各样的Bug,比如手头的RAD Studio 2009进行命令行编译,Delphi正常,BCB则报出超过100个错误,类似如下:
[plain] view plaincopyprint?
C:\Embarcadero\RAD Studio\7.0\Bin\www.introzo.coms(2175,3): error : Error: Unresolved external '__fastcall Strhlpr::UnicodeFree(System::UnicodeString)' referenced from C:\EMBARCADERO\RAD STUDIO\7.0\LIB\DEBUG\VCLE.LIB|ustring
C:\Embarcadero\RAD Studio\7.0\Bin\www.introzo.coms(2175,3): error : Error: Unresolved external 'Typinfo::BooleanIdents' referenced from C:\EMBARCADERO\RAD STUDIO\7.0\LIB\DEBUG\VCLE.LIB|vclinit
检查了一下发现编译过程(bcc32.exe)没有问题,只是在ilink32.exe链接过程中报错,在IDE中打开此项目进行编译,查看Message-Output窗口,比较两者的ilink32命令行参数,发现两者有两个地方有明显差异,一个是IDE生成的命令中没有类似 C:\Embarcadero\RAD Studio\7.0\lib\EN\debug 的路径(指的是EN这个目录,去除上面rsvars.bat中的@SET LANGDIR=EN 就可以避免产生这样的搜索路径) ,但是虽然这个目录不存在,也应该不至于导致出错。第二个差异是缺少了rtl.bpi和vcl.bpi的附加obj参数,解决办法是在$(BDS)\bin目录中找到 www.introzo.coms 文件,用记事本打开,搜索字符“memmgr.lib“,在前面加上"rtl.bpi;vcl.bpi" (用;分隔,不含引号),一共有两处要修改。或者查找 "c0w32",在后面加上 "rtl.bpi;vcl.bpi",只有一处修改 —— 因为IDE的命令行中 rtl.bpi vcl.bpi是在c0w32和memmgr.lib中间的。—— (注意:在XE2中,加在c0w32后面已经不管用了,编译会报另一个错误VCL.BPIW.OBJ不存在,Targets文件有很大变化,可能参数的位置变动过了,导致与其他参数混在一起,所以还是加到memmgr.lib处更加合理)。
一些组件包比如DevExpress的Package,没有dproj或者cproj 项目文件,只能通过IDE进行转换,但坑爹的是bpk在好几个版本以前(CRS 2007?)已经不支持bpk项目,根本打不开也谈不上转换了,但它其实是一个make文件,可惜用make命令编译还是要出错,不想去研究了。总之,BCB永远活在Delphi的阴影下。
C++Builder和VC,Delphi哪个容易学,功能又强大
要说容易,C++Builder是三者中最容易的
并且它是可视化开发,效率高
但是也需要你的C语言的基础,不然你会连代码怎么写都不知道
如果想做万能程序员,可以在学好C语言后转向delphi
毕竟delphi的功能是最强的,没有它做不到的事
如何在C++Builder中使用Delphi控件
c++builder将delphi的控件基本上都转化为自身格式的控件。至于delphi的第三方控件只能由原开发商转换后你才能在c++builder使用。
求教C++Builder 给delphi 提供静态库 的方法
void PASCAL CObject::operator delete(void* p)
{
#ifdef _AFX_NO_DEBUG_CRT
free(p);
#else
_free_dbg(p, _CLIENT_BLOCK);
#endif
}
1.用delphi调用BCB的OBJ,最好用C的后缀,尽量不用C++
2.在C的程序中,不要使用任何系统函数,否则除非把该系统函数所在的OBJ也{$L}到delphi中,不然就会出现Unsatisfied forward or external declaration
(你的函数中肯定用了memcpy等函数)
如果你确要strcpy等函数,自己写一个(网上这类源码有很多,有些BCB就有源码)
3.编译时推荐使用以下选项:
c++ builder 和Delphi偏向应用哪个更好
两个都行,看项目要求而已。但对于CB不纯说嘛。。。坚决予以否认。
D用得好不好与会不会C也无关,完全不同的两种语言,甚至很多习惯也不同,所以嘛,会C的人D不一定好(俺就是这样)会D的人C也不一定牛(不举例鸟)
呵呵,不过会C的人学D,与会D的人学C难易程序相当:)
相关文章
- 10-06 九月开学季新教师亮相班美丽句子(九月开学季美丽句子
- 10-06 UiPath 在 3B 轮 C 轮融资中获得 2.
- 10-06 什么是长焦镜头,什么是广角镜头(什么是长焦镜头)
- 10-06 vs2010对应msdn下载_如何下载安装Visu
- 10-06 stm32芯片焊接方向(stm32芯片焊接教程)
- 10-06 如何画lm324原理图(lm324原理图绘制步骤)
- 10-06 郭明錤:预计歌尔将恢复苹果AirPods Pro
- 10-06 小米海外首发5G CPE Pro:采用高通CPU,
- 10-06 小米13至尊徕卡影像旗舰手机跑分出炉:骁龙8代二代
- 10-06 研究报告:全球 75% 的公司禁止或考虑禁止在工作
- 10-06 清华大学发布《大语言模型综合性能评估报告》:GPT
- 10-06 科学家研发人工智能声纳眼镜:可识别唇读,准确率达9
- 10-06 任天堂公布新一轮Switch Online游戏阵容
- 10-06 任天堂宫本茂:下一代Switch主机将提高向后兼容
- 10-06 Switch 卖不动了,任天堂遭遇中年危机
- 10-06 需要导出100多个Excel报表,所以实现起来足够
- 10-06 for循环内嵌套for循环,你需要了解的代码性能优
- 10-06 for循环内嵌套for循环,你需要了解的代码性能优
- 10-06 IntelliJ IDEA的神级插件,由ChatG
- 10-06 IntelliJ IDEA的神级插件,由ChatG
- 最近发表