悲情土仔一生

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  14 随笔 :: 0 文章 :: 74 评论 :: 0 Trackbacks

在C++Builder中安装Indy 10.2.3详细步骤


作者:Tuuzed(土仔)    
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.cppblog.com/tuuzed/archive/2008/06/17/53771.html




一直想自己制作一个通过SMTP协议发送邮件的小程序,打开BCB才知道BCB6中自带有NMSMTP和IdSMTP两种控件。NMSMTP只支持比较老的RFC821协议,通俗来说就是不支持目前SMTP服务器所需要的EHLO命令(具体可参考RFC1869和RFC2554);而InSMTP是支持较新的RFC协议的。无奈的是BCB6原来自带的是Indy8套件?好老了,在Indy网页中都已经到Indy9和Indy10了。目前网上关于Indy10的讨论渐渐多了起来(英文网站讨论的比较多些),但总体说来是不够,例如在BCB6中如何安装等等。通过上网搜索和自己半天的摸索,终于在BCB6中安装好了最新的Indy 10.2.3版本。

第一步:下载Indy 10源代码 。

Indy是开源的项目,是由SubVersion来管理版本信息。主页中有给出链接地址:http://www.indyproject.org:8080/svn,进去后一定要注意:不要一个一个文件下载,要通过SubVersion系统的打包程序来打包源代码,防止遗漏或弄错成了测试代码;并只用选择trunk这个目录即可,其他的目录是给调试或测试的人员使用的(主页http://www.indyproject.org/Sockets/Download/IndyviaSubversion.EN.aspx上有说明),见图:

indy1

 

首先在trunk目录前打勾,在toggle右边的下拉框中选择“Download as zip”,按Go!下载源代码,保证是最新的了(看右边目录的时间。

第二步:编译Indy 10源代码。

废话一句,这一步首要的是确保你安装了BCB或DELPHI。解压下载来的ZIP文件,进入trunk\Lib,这里能看到有一些bat文件和目录。其中“Fullc6.bat”是我们需要运行的安装文件(C6表示BCB6版本,D6表示DELPHI6等等),以前网上说需要对Indy10的安装文件Fullc6.bat和某个.hpp文件进行改进(见ccrun网站上的Indy10源代码)。可能是这个版本比较新,我运行了一下,只是在最后会提示“系统找不到指定的文件。”,分析一下bat文件内容,是“copy *.rsp ..\..\C6”语句引起的错误,我找遍了整个trunk都没有.rsp文件,估计是以前的版本遗留下来的语句。不放心的话,可以注释掉bat中的这句语句,编译一样能通过,并且成功完成。不出意外,trunk下应该就有一个C6目录了,这就是我们需要的控件代码了。

第三步:卸载BCB6自带的Indy8控件。

刚开始我没有卸载原来的版本,安装后进行测试竟然出错了,后来上网搜索,发现要卸载原来的Indy8控件。卸载很简单:

1、进入BCB6 IDE-关闭所有项目“File-Close All”-Component-Install Packages,Remove掉有Indy字样的控件包,OK退出,再关闭BCB 6。

2、将BCB6安装目录下的文件删除或移走。有以下一些文件:\bin\dclindy60.bpl \lib\obj\dclindy.dcp;\lib\obj\dclindy.dcu;\lib\obj\id*.dcu ;\lib\obj\indy.dcp;\lib\obj\indy.dcu;\include\vcl\id*.* 。为了对INDY8做个备份,我写了一个Uninstall的bat文件,先找地方建立一个目录,运行它就行了,它会原样把目录建起来:

 

 1REM %1=BCB installtion dir
 2mkdir bin
 3mkdir lib
 4cd lib
 5mkdir obj
 6mkdir Debug
 7mkdir Release
 8cd ..\
 9mkdir include
10cd include
11mkdir vcl
12cd ..\
13MOVE %1\bin\dclindy60.bpl bin\    
14MOVE %1\lib\obj\dclindy.dcp lib\obj\      
15MOVE %1\lib\obj\dclindy.dcu lib\obj\      
16MOVE %1\lib\obj\id*.dcu lib\obj\      
17MOVE %1\lib\obj\indy.dcp lib\obj\     
18MOVE %1\lib\obj\indy.dcu lib\obj\   
19MOVE %1\lib\Debug\indy.* lib\Debug\
20MOVE %1\lib\Release\indy.* lib\Release\   
21MOVE %1\include\vcl\id*.* include\vcl\

 
3、将BCB6安装目录下CBuilder6\Source\indy改个名字吧,加个.old,表示这是老的Indy控件了。

第四步:安装Indy10到BCB6 IDE。

1、Copy 源代码trunk\C6目录到BCB6安装目录下,我还是放在Source下,把C6改名为Indy10。

2、运行BCB6-关闭所有项目“File-Close All”-Component-Install Packages-Add,把刚才改名的indy10目录下的dclIndyCore60.bpl和dclIndyProtocols60.bpl项目加进来。保存设置后,再选择Project-Options-Directories/Conditionals-include path和Library path中将indy10的目录添加进来,保存设置。


※以下为2008年08月03日增加※
3、拷贝IndyProtocols60.bpl,IndyProtocols60.bpi,IndyCore60.bpl,IndyCore60.bpi,IndySystem60.bpl,IndySystem60.bpi共6个文件到WINDOWS安装目录的system32下。
※增加结束※

第五步:安装结束和测试。

重启BCB看看,是不是有Indy10图标出来了?没有的话,可能是漏了哪一部了。再重做一遍看看。如果不出意外,在控件列表最后已经有最新的idny控件出来了,图标好看了很多(仅仅是给设计人员看的图标)。新建一个项目,然后拖一个控件进来,在控件上鼠标右键,可以看看版本号,build项目一下,如果没有error,那就证明安装成功了。

 

 

额外提示:

1、Indy是一个开源的项目,不可能保证你的项目它能完全兼容,时刻注意Indy项目的发展和更新代码是关键;

2、开源项目的文档比较少,主要还是靠网上高人的支持和其他一些开发人员的测试,主页上有文档下载URL: http://www.projectindy.org/downloads/IndyDocs_10.1.5.0_HtmlHelp.zip。看了一下,是indy10.1.5的,和10.2.3还是有些差别,而且有些方法和属性不详细,如果想要进一步的支持,好像可以买项目组出的技术书,具体看主页吧。

3、学习无止境,实践出真知。感谢网上所有给我提供参考和帮助的人。

posted on 2008-06-17 23:28 土仔 阅读(15194) 评论(22)  编辑 收藏 引用 所属分类: 土仔编程

评论

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2008-06-18 09:02 梦在天涯
平时用C++ builder的吗,主要是做什么类型的项目的哦?  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2008-06-18 12:44 土仔
@梦在天涯
常用BCB,有时偶尔用用VC吧。没有什么项目,自己玩玩,想到什么就做什么吧。失业中。。。。。  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2008-06-30 13:11 信任
平时喜欢用bcb,当然也要看具体的项目了,呵呵  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2008-08-22 14:19 xuliang
请问在c++ builder 2007或delphi 2007怎么安装,  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2008-08-27 13:10 土仔
@xuliang
在Lib里有fulld10.bat,应该支持Delphi2007。因为没有装BCB2007,所以不知道该如何安装,建议去控件的主页上看看。  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-06-29 16:19 魯魯
土仔大大您好,我有按照文章的內容步驟做
可以正常安裝
但我一但用到idAntiFreeze元件時就會發生:
[Linker Fatal error] Unable to open file 'IDANTIFREEZE.OBJ'
的問題,不知大大有沒有解決的方法?  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-06-29 22:40 土仔
@魯魯
首先,要確定你安裝的indy和c++builder的版本号是多少。indy 10有用最新的嗎?安裝成功后,先不用idAntiFreeze元件,使用其他的元件試試有沒有同樣的問題?

如果,其他元件也出現這樣的問題,建議你把Project-Options-Directories/Conditionals-include path和Library path中的indy10目錄移動到第一個位置試試。  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-06-30 11:08 魯魯
土仔大您好
我用IdHTTP元件的話就沒有問題(不過仍然不能get網頁…不知道是哪邊設定錯誤)

我是用「FULLC6.bat」來打包的,這個檔案應該沒有錯吧?
先謝謝土仔大大的回覆了。^ ^  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-06-30 11:09 魯魯
土仔大您好
我用IdHTTP元件的話就沒有問題(不過仍然不能get網頁…不知道是哪邊設定錯誤)

我是用「FULLC6.bat」來打包的,這個檔案應該沒有錯吧?
先謝謝土仔大大的回覆了。^ ^  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-06-30 20:56 土仔
@魯魯
還是沒有弄清楚你的C++ BUILDER是什麽版本,如果是6,才能用FULLC6.BAT打包,如果不是,那就不行了。不能get,說明功能有缺失。。  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-07-01 08:15 魯魯
謝謝土仔大大的回覆!
我也是用BCB6的(因為公司不給買其它版本……Orz)

不知土仔大還有沒有在使用indy10來開發新的軟件,好期待土仔大有新的文章~~~~

另一方面,我最近也重裝了indy9(2008年最後的版本,不知版次為何)
發現indy9跟indy8也有點小小的落差,不過沒像indy10這麼難以練習

但學indy10是潮流吧,總不能一直在用舊的東西…
不好意思,還是小抱怨了一下
謝謝土仔大大了唷!  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-07-06 10:41 魯魯
另外,我在bcb6上使用indy10.2.3
在使用TIdAntiFreeze元件後
會出現
「Linker Fatal Error ......... "idantifreeze.obj"」
的問題
不知道土仔大大有沒有遇到過這樣的問題呢?  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-07-18 00:48 土仔
@魯魯
不好意思,上個星期出差剛回。我嘗試了一下,我的INDY10確實也是這個問題。隨便GOOGLE了一下,網路上的一個檔IndyFAQ.pdf里有說道:
We had to do something unusual in the Indy packages by putting a run-time unit (IdAntiFreeze) into the design-time package instead of the run-time package so the run-time package would only depend on the RTL and not the visual Component Library. In Borland Delphi, this is not a problem if the IdAntiFreeze was included and because that unit has no design-time code in it at all.
Unfortunately, this is a problem in C++Builder because you depend upon a .HPP and .OBJ file for
that unit and in C++Builder, those are not generated for design-time packages at all. For
C++Builder, we have to trick the Delphi compiler (that's included in C++Builder) into generating the
.HPP and .OBJ files for IdAntiFreeze using a dummy unit named IdDummyUnit.

目前我認為只能自己用BCC32命令來生成.OBJ文件才能解決問題了。  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-07-27 13:29 魯魯
謝謝土仔大大的分享,目前我的做法是先改回indy9的最後版本
感覺起來還蠻搭的

我有另外測了一下10.5.5的版本,結果仍是相同,所以應該就是沒辦法正常在bcb6下用了吧…

最後想再請教土仔大大是利用什麼關鍵字搜尋的呢?
我在網路上也找了很久,但沒看到土仔大提供的這段訊息哩。  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-08-01 13:36 土仔
@魯魯
你试试IndyFAQ.pdf这个关键字看看。如果没有找到,发私人留言给我你的邮箱地址。  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-08-03 19:15 bingyu0914
问下INDY10.2.3中的idFTPServer支持IPV6吗?为什么我的总有错?  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-08-03 23:46 魯魯
土仔大大您好,我有在網路上找到IndyFAQ.pdf的這個檔案
在您說提到的那一段文章之後有這麼一項:
We never did use the IndyC*.bpk packages at all when building the Indy binaries for installations.
We were simply the Delphi .dpk's along with some special parameters that cause DCC32 to
generate .OBJ and .HPP files and then making a .LIB file. Now just so there's no
misunderstanding, you can get C++Builder binaries from Delphi .dpk's and we know of two vendors
that do this successfully. The processed for building the .BPK's with MAKE is really just the same
thing because MAKE is just a batch processor that calls the Delphi compiler with the exact
parameters we are using and having TLIB add the objects to the .LIB files.

難道是在說利用Delphi所編譯出來的lib給bcb中使用?
中間提到了很多運行時期以及設計時期的內容,無奈小弟才疏學淺,看不懂這文章的精華,還請土仔大大賜教了!  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-11-11 13:11 aaaaaaa98
[Linker Fatal error] Unable to open file 'IDANTIFREEZE.OBJ'
我用dcc32编译了idantifreeze.obj,但是出现handlefinally()找不到的错误,
无法解决,请各位同行帮忙  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2009-12-01 22:50 魯魯
IDANTIFREEZE.OBJ有解了

Idantifreeze.pas
包到專案中即可  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2010-06-06 01:39 BlanchardRobyn34
I took my first <a href="http://lowest-rate-loans.com/topics/business-loans">business loans</a> when I was 32 and this supported me very much. But, I need the auto loan also.   回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2013-04-06 18:49 samples of resume writing
At whatever time you desire to get high quality samples of resume writing, you must go for the bureaus which are highly popular among the customers for providing errorless papers.  回复  更多评论
  

# re: 在C++Builder中安装Indy 10.2.3详细步骤 2013-06-06 20:51 智能办公
以前一直用Delphi,现在想学习一下CB,感谢分享!  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理