C++Builder中关于INDY库的使用 以及一些问题的解决(E2238 Multiple declaration for 'fd_set')

Indy库是一个非常棒的库,里面大约有100个组件或类,完全按照tcp/ip协议来,如果你不愿意每次都WSAStartup并且还要查rfc的话,就使indy吧,我使完的感觉就是爽

delphi6和cb6以上都默认安装,但并不一定是最新的版本,目前最新的版本是10beta
有关下载等可以到www.nevrona.com/indy去看看

下面说一下在cb6中安装indy9的过程(cb5可以直接装,delphi亦然)

1. 运行BCB6, 先將 Indy8 的 package uninstall.
(Component-> Install Package -> Uninstall Indy)

2. 打开控制台的新增/删除, 选Borland C++ Builder 6下选更新.

3. 进入 BCB6 的 Installation Wizard, 选 Modify, 并在之后的 Program Files
把 Indy 設成 Do not install.

4. 完成 Installation Wizard 後, 请确认下列文件; 如果未刪除, 需自行刪除
bindclindy60.bpl
libobjdclindy.dcp
libobjdclindy.dcu
libobjid*.dcu
libobjindy.dcp
libobjindy.dcu
includevclid*.*
sourceindy*.*
system32indy*.bpl => Windows 2000/XP
systemindy*.bpl => Windows 9x

5. 将 Indy 9.00.11 的 source 解到 sourceindy (看个人爱好)
运行 FULLC6.BAT, 並利用 BCB6 的 Component-> Install Package
将其安装近来.

6. 设定 include path 或直接将 C6Id*.hpp copy 到includevcl 下.

7. 设定 winhelp file.

8. 完成.



在安装完后,我还发现一个问题,加入stl后再编译时会出现一个windows头文件编译出错,好象是strcpy,后来我发现是namespace的问题,需要在自己的头文件里加using namespace stl;这里需要习惯用std::***的朋友注意(比如我)

另外如果你同时引用DBISAM库(其实我也不知道这库是干吗的),反正就突然出现说winsock2.h编译出错,
[C++ Error] winsock2.h(109): E2238 Multiple declaration for 'fd_set'
[C++ Error] winsock.h(54): E2344 Earlier declaration of 'fd_set'

这种错误肯定是头文件互相引的时候出的错,不过找起来可就费劲了,不过好在有google,找了半天终于查到了
The winsock2.h header file is included by the Indy components and is based on Winsock 2.2. The winsock.h header file is included by DBISAM and is based on the Winsock 1.0.

于是解决方案出来:
在你的头文件上加上
#define _WINSOCKAPI_

一切就ok了

现在就试试indy吧,什么http服务器,domain服务器,fpt,email,甚至连mime,base64,md5都轻松搞定

你可能感兴趣的:(C++Builder中关于INDY库的使用 以及一些问题的解决(E2238 Multiple declaration for 'fd_set'))