1,下载哪个版本
我在最开始选择了最新版本5.6,后来才发现:并不是越新越好。本来我只是对网络编程进行学习和尝试,但是ace5.6的库文件需要vs2005才能够编译(.sln文件打开项目)。
所以,我还是选择了ace5.4版本,可以用vc6编译运行:)至于下载的地址嘛,直接上网搜索,或者在官网上翻找——我比较倾向于前者:http://download.dre.vanderbilt.edu/previous_versions/ 而且官网的链接可能发生改变。
2,编译链接、环境设置
下载源文件后的事情,可以按照:http://blog.csdn.net/yubo198/archive/2008/01/30/2072826.aspx 这篇文章进行。
不过值得注意的是:我编译生成的dll文件,是在$(ace_root)/bin目录下,而lib文件,则是在$(ace_root)/ace 目录下,而不是像上文所说的,在$(ace_root)/lib 目录下。不过没有关系,将lib文件拷贝到lib目录下、在系统环境变量path中,添加bin目录即可。
include目录设置(在vc中设置,让编译器能找到头文件)、lib文件设置(在vc中设置)、dll运行库的设置(运行时需要加载,所以要放到path环境变量中),这三个方面搞清楚了,也就差不多了。
3,编写第一个程序
ACE网络程序入口点可不止一个呢!在$(ace_root)/tests目录下,双击test.dsw,可以运行所有示例程序。它们很多使用run_main作为函数入口点函数。你可以尝试编译运行一下这里的程序,满足一下自己的快感:)
需要自己动手编写一个程序了,我简单地写一个:
然后编译运行——居然出错?而且是link出错?
仍旧是动态链接库的问题:要么,在project setting->link里面,老老实实地添加:aced.lib[1],要么使用预编译宏:
另外,注意main函数中需要包含参数:int argc, char** argv,否则也会莫名其妙地link出错(提示main函数出错)。
此外,到网上找到一篇代码编写的帖子:
http://www.yuanma.org/data/2006/0808/article_1331.htm 从ACE源代码看Socket编程,夸赞ace代码优秀的blog
That's all ......Good luck!
[1] 这里还有一个小插曲,我在添加lib文件的时候,由于是多工程,结果不小心将lib文件加入了错误的工程——汗,结果当然还是link出错啦!我就很纳闷了:明明pragma宏可以起作用,在link选项中添加啊就不行?