欢迎来到Introzo百科
Introzo百科
当前位置:网站首页 > 技术 > c++builderdelphi的简单介绍

c++builderdelphi的简单介绍

日期:2023-09-27 04:41

本文目录一览:

  • 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难易程序相当:)

关灯