VC++ 6.0 使用ICE

来源:互联网 发布:mac 中文输入法 消失了 编辑:程序博客网 时间:2024/05/21 04:18

ICE是目前用得较多的开源分布式中间件,其开发人员是由前CORBA大佬级别的牛人开发的。主要是CORBA太大太复杂了,别说一般人就是有几年开发经验的专家也很难用好,因此,可以认为ICE是轻量级的CORBA。开源的东西挺好,可关键是支持太有限了,虽然有帮助文档,但是比起商业的如MSDN还是有些逊色,并且,其使用的广泛度有限,这也导致相应的资料相对匮乏,就比如介绍如何在VC6.0上安装使用ICE的资料可谓凤毛麟角。怎奈,VC6.0上安装使用ICE又问题多多却又因为需求的原因不得不用VC6.0,笔者经过多天的努力虽然没有完美地解决该问题,但也算踉踉跄跄地通过了测试,好了,废话少说,直奔主题。

在VC6.0中使用ICE,一定要注意版本问题!首先,你需要安装ICE环境,其次,由于貌似VC6.0自带的模块库并不理想,ICE采用了stlport,用的是SGI STL,因此需要安装stlport,stlport也是开源的项目,要使用一般需要编译(也即安装)。在该过程中,有很多地方需要注意,否则,你的ICE程序就会报若干你不知所云的错误。

1、版本的选择,这可不是越新越好,因为毕竟都不是商业软件,向后兼容不是很理想(客观来说,能做到这一步已经很不错了,毕竟移植性问题比较复杂),如果你安装了ICE最新版本(3.4.0)和stlport的最新版(5.2.1),会发现编译的时候会有一大堆稀奇古怪的问题,如果你有足够耐心解决了,又会有一大堆链接错出来,接下来就死活通不过了,后来,笔者用VC提供的DUMPBIN工具将stlport生成的lib库中函数导出来看看,发现编译的函数和lib库中的函数有些细微的差别,主要是stlport宏定义的差别,在经过几次尝试之后仍然未果,于是,想到了换一个版本试试,luckily enough,通过了。我通过的版本是:ICE采用的3.3.1-vc60,这个可以在www.zeroc.com下载,stlport是4.5.3,可以在http://sourceforge.net/projects/stlport/files/STLport%20archive/STLport%204/下载。

2、ICE的安装很简单,只要认识next按钮就可以了。stlport安装其实也挺简单,只是,windows把大家惯坏了,相比就会复杂一点,需要根据你的编译环境进行编译从而生成相应的lib和dll,下面就简要地说说stlport的安装,其实,每个版本stlport是不一样的,但是,大同小异。如何编译和使用其实在INSTALL文件上面描述得还算清楚啦,虽然不保证一次就能成功,但是,试几次还是没问题的。为了省去大家看文档的功夫,我将安装过程罗列一下:

2.1 、首先肯定是进入DOS环境,这个就不用说了吧。不会?百度去。运行VC安装目录下的VCVARS32.BAT,该批处理文件主要是设置VC的环境变量,因为你后面要用它的编译器cl.exe和链接器link.exe,以及nmake工具,其位置在%vc install%\vc98\bin\。

2.2、将盘符转入stlport的存放目录(现默认该文件已经解压了)下的src目录,使用nmake工具进行编译,nmake是一个编译工具,在gcc下是make,它需要一个makefile文件来进行编译。不懂?没关系,makefile文件已经给你做好了(即vc6.mak文件,它就在src目录下),你只需要在dos中输入命令:nmake /fvc6.mak clean install,然后,你就会看到满屏的编译指令,你需要做的就是等待,这个过程可能几分钟吧。注意:该命令是将编译连接已经安装(即将lib文件和.h头文件拷贝到指定目录下)。如果编译成功的话,你会发现在VC98\lib下新加了4个.lib库文件,在VC98\include下增加了一个stlport的文件夹,里面包含了标准模板库的头文件,这些东西都是你要在VC环境中设置的

3、设置VC环境。现在,平台环境算是搭建好了,但是,你还需要设置VC开发环境,具体设置是在Tools->Options->Directories,在include选项卡中添加VC98\include\stlport,并且需要将其设置在最前面(否则就不会用到stlport的STL而是vc自带的啦),它会在编译的时候用到;另外还需要在lib选项卡中添加VC98\lib(其实这个是可以不用的,原因是ICE3.3.1中已经包含有stlport的lib),不过添加也无妨,它会在链接的时候用到;至于#pragma伪指令加入相应的lib已经有stlport为了做了,你就无需操心了,同时,还要提醒不要忘记了将VC的运行时库设置为多线程的,方法为:project->setting->C/C++中的Code Generation选项卡中将默认的单线程DLL改为多线程!(不要轻视这一步,如果疏忽可能会导致莫名奇妙的编译错误,是的,笔者吃过这个亏)

4、最后,需要将ice安装目录下iceutil文件夹中的config.h文件打开,将#define _STL_DEBUG注释掉,原因是如果不注释掉,编译就无法通过(至少笔者试过几次都是,也没有更好的解决办法)。

好了,整过过程就是如此,总结一下吧:

1)版本问题:不要用最新的版本,笔者试过不行!不过,你也可以试试,如果可以,希望分享!可行的搭配:ice采用3.3.1-vc60 + stlport-4.5.3 + VC 6.0,还有没有其他可行的版本笔者没有试过,至少这个是可以保证可以的。

2)stlport的安装,可以安装上述步骤尝试,笔者不保证在任何机器和环境下都可以,如果不行,推荐你看看stlport自带的INSTALL文档,上面描述得比较到位。

3)VC环境的配置,主要是包含相应的头文件(.h)和链接库(.lib);设置多线程运行时库。

4)修改ice中的config.h文件


说了这般多,希望对你有用,欢迎转载和评论,但请注明出处,谢谢!