Indy10 for C++ builder 6 编译笔记

原创 2004年06月26日 15:03:00
1、在$(BCB)目录下创建一个名为indy10C6/Source的目录;
2、下载indy.zip,改名为indy-10-2004-06-09.zip,将indy-10-2004-06-09.zip解压到Source目录下;
3、设置环境变量
SET NDC6=C:/tools/CBC6
SET NDWINSYS=C:/WINDOWS/System32
4、几个package之间的依赖关系(从*60.dpk文件中得到):
========> IndySystem60 <=================||
||            ^^                         ||
||            ||                         ||
||        IndyCore60  <== dclIndyCore60  ||
||           ^^  ^^                 ^^   ||
||           ||  ==============||   ||   ||
||           ||                ||   ||   ||
||======= IndyProtocols60 <== dclIndyProtocols60
            ^^
            ||
        ?IndySuperCore <== dclSuperCore (好像只有dehpi7.0版本的,不知C++ Builder 6能否支持?)

5、手工编译
创建$(BCB)/indy10C6/buildC6及$(BCB)/indy10C6/objs目录
Copy每个包所需要的.pas、.inc、.dpk、.res、.obj(IndyProtocols60的Zlib有用到)文件到$(BCB)/indy10C6/buildC6目录下(不会用-I及-U选项,老有问题,才出如此下策)
5.1先编译IndySystem60:
dcc32.exe IndySystem60.dpk /O../objs /DBCB /M /H /W /JPHN -$d-l-n+p+r-s-t-w-y-
dcc32.exe IndySystem60.dpk /O../objs /DBCB /M /H /W -$d-l-n+p+r-s-t-w-y-
../Source/Win32/LspFix IndySystem60.lsp
tlib.exe IndySystem60.lib /P32 @IndySystem60.lsp
完成IndySystem60.bpl及IndySystem60.lib的编译。

5.2、接着编译IndyCore60
dcc32.exe IndyCore60.dpk /O../objs /DBCB /M /H /W /JPHN -$d-l-n+p+r-s-t-w-y-
dcc32.exe IndyCore60.dpk /O../objs /DBCB /M /H /W -$d-l-n+p+r-s-t-w-y-
../Source/Win32/LspFix IndyCore60.lsp
tlib.exe IndyCore60.lib /P32 @IndyCore60.lsp





编译IndyProtocols60.dpk之前,单独编译IdCompressionIntercept.pas及IdDummyUnit.pas
dcc32.exe IdCompressionIntercept.pas /O../Source/objs /DBCB /M /H /W /JPHN -$d-l-n+p+r-s-t-w-y-
dcc32.exe IdDummyUnit.pas /LIndy60.dcp /DBCB /O../Source/objs /M /H /W /JPHN -$d-l-n+p+r-s-t-w-y-











附录:编译命令分析
%NDC6%/bin/dcc32.exe IndyCore60.dpk /O../Source/objs /DBCB /M /H /W /JPHN -$d-l-n+p+r-s-t-w-y- %2 %3 %4
%NDC6%/bin/dcc32.exe IdCompressionIntercept.pas /M /DBCB /O../Source/objs /H /W /JPHN -$d-l-n+p+r-s-t-w-y- %2 %3 %4
1、%NDC6%/bin/dcc32.exe
这是编译pascal编译工具;
2、/M
根据Indy相关的文件描述,不能用/B参数,用这个来一个一个地编译;
3、/DBCB
定义一个BCB编译宏;
4、/O
指示目标码的目录,好像不起作用,不能放在相应的地方;
5、/H
编译输出提示信息;
6、/JPHN
没有完全搞明白,/JP是说明要生成C++用的obj文件,但是多了HN是做些什么呢?
7、-$d-l-n+p+r-s-t-w-y-
-$编译开关起始符,含义如下:
d-:表示不要生成调试信息;
l-:去掉本地调试符号;
n+:没有搞明白;
p+:开启字符串参数;
r-:不做范围检查;
s-:没有搞明白;
t-:Typed @ operator,off;
w-:Generate stack frames,off;
y-:Symbol reference info,off;

dcc32完整的参数表:
Syntax: dcc32 [options] filename [options]
  -A<unit>=<alias> = Set unit alias  -LU<package> = Use package        
  -B = Build all units               -M = Make modified units         
  -CC = Console target               -N<path> = DCU output directory  
  -CG = GUI target                   -O<paths> = Object directories   
  -D<syms> = Define conditionals     -P = look for 8.3 file names also
  -E<path> = EXE output directory    -Q = Quiet compile               
  -F<offset> = Find error            -R<paths> = Resource directories
  -GD = Detailed map file            -U<paths> = Unit directories     
  -GP = Map file with publics        -V = Debug information in EXE    
  -GS = Map file with segments       -VR = Generate remote debug (RSM)
  -H = Output hint messages          -W = Output warning messages     
  -I<paths> = Include directories    -Z = Output 'never build' DCPs   
  -J = Generate .obj file            -$<dir> = Compiler directive     
  -JP = Generate C++ .obj file       --help = Show this help screen   
  -K<addr> = Set image base addr     --version = Show name and version
Compiler switches: -$<letter><state> (defaults are shown below)
  A8  Aligned record fields           P+  Open string params            
  B-  Full boolean Evaluation         Q-  Integer overflow checking     
  C+  Evaluate assertions at runtime  R-  Range checking                
  D+  Debug information               T-  Typed @ operator              
  G+  Use imported data references    U-  Pentium(tm)-safe divide       
  H+  Use long strings by default     V+  Strict var-strings            
  I+  I/O checking                    W-  Generate stack frames         
  J-  Writeable structured consts     X+  Extended syntax               
  L+  Local debug symbols             Y+  Symbol reference info         
  M-  Runtime type info               Z1  Minimum size of enum types    
  O+  Optimization                  

C++ Builder链接错误的解决方法

最近更换了MD5的加密函数,新的加密函数使用了
  • gzliudan
  • gzliudan
  • 2014年05月18日 20:44
  • 2957

用Indy组件在C++ Builder中编写UDP应用程序

使用Indy UDP 插件,依据本博客前文《用Indy组件开发Socket应用程序》,先编写单独的TCP服务器和客户端程序,然后再编写UDP程序后,将单独的UDP程序合成一个含服务器和客户端的程序,采...
  • hawkzone
  • hawkzone
  • 2005年08月08日 21:25
  • 4286

在 C++Builder 2006 中使用 Indy10 控件!

首先,这是个 C++ Builder 2006 的 BUG!C++Builder 的大部份控件均从 Delphi 的 .pas 而来。从 .Pas 编译生成的 .hpp 会丢失部分 struct 信息...
  • sczyq
  • sczyq
  • 2006年04月14日 16:03
  • 2859

Indy10在BCB6/BDS2006上的安装

首先参看一篇文章:《在 C++Builder 2006 中使用 Indy10 控件! 》 sczyq兄修改后的IdWinsock2.zip基本完美了,仅仅结构的声明上大小写有一点点纰漏,我稍稍修改了一...
  • 9527
  • 9527
  • 2006年10月20日 21:45
  • 4388

将C++ Builder6 的Indy 升级到 9.0

第一步:下载Indy 9要正确安全Indy 9的最新版本,必须下载两个版本的源代码。 下载Indy 9.0.0.17 版源代码 下载Indy 9.0.0.18 版...
  • whchen
  • whchen
  • 2006年09月28日 08:55
  • 3862

Indy9 安装到C++Builder6 (本人验证通过)

1)移除 BCB6 中原本的 Indy   (1.1)放入原本安裝 BCB6 的光碟片,選擇「C++ Builder 6」   (1.2)在 Borland C++ Builder 6 Enterpr...
  • proton
  • proton
  • 2004年12月29日 20:07
  • 1099

[delphi]indy10 idhttp get方法

idhttp中对于get方法的定义: procedure Get(AURL: string; AResponseContent: TStream); overload; proc...
  • none01
  • none01
  • 2013年03月11日 10:43
  • 6683

我的第一个C++Builder编译---- 解决lib链接问题

一、接触C++Builder 最近公司有一个工程是带有  .bpr  .dfm  的文件: 开始还纳闷,不知是什么工程。  二、安装C++Builder 安装没什么可讲的,一路下一步 ...
  • chenyujing1234
  • chenyujing1234
  • 2012年07月09日 10:31
  • 2816

c++ builder 6使用笔记2

BCB不能调试了,发现在linking 页中一定要钩选中,full debuging information这一项才可以调试! C++ Builder的VCL组件中TApplicatio...
  • goodai007
  • goodai007
  • 2012年02月02日 13:35
  • 1139

使用 C++ Builder 创建应用程序

3.1 创建应用程序 C++Builder的主要用途于设计创建Windows应用程序。有三种基本的Windows应用程序: · WindowsGUI应用程序。 · 控制面板应用程序。 · 服务应用程序...
  • u010984552
  • u010984552
  • 2016年08月19日 20:18
  • 2123
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Indy10 for C++ builder 6 编译笔记
举报原因:
原因补充:

(最多只允许输入30个字)