ICE开发环境配置(win2003+vc9.0)
2009.6.18
一、系统环境设置
i.首先下载安装Ice-3.3.1-VC90.msi和Ice-3.3.1-ThirdParty-VC90.msi到一个目录下,选择安装。
ii.下载Ice-3.3.1.zip,按Ice-3.3.1\cpp\INSTALL.WINDOWS安装,用C++开发ice所需的文件。
iii.在环境变量PATH变量中增加“~\bin“,“~\lib;”、“~\ThirdParty\bin;”、“~\ThirdParty\lib”等;
iv.打开命令行程序(viuausl stdio 2008 命令提示窗口),试着敲几个命令看看,比如slice2cpp, slice2java等,如果环境设置正确,那么以上命令会有如下输出:
slice2cpp: error: no input file
二、开发环境设置
i.对于Visual Studio .NET 2008的设置很简单,只需要在IDE菜单的“工具”->“选项”->“项目”->“VC++目录”选项卡下,选择“可执行文件”下拉选项,增加“~\ThirdParty\bin”、“~\bin”等;选择“包含文件”下拉选项,增加“~\include”、“~\ThirdParty\include” 等;选择“库文件”下拉选项,增加“~\ThirdParty\lib”、“~\lib” 等就完成设置了;
ii.下面我们一起用VS.NET来写个ICE程序验证一下设置是否正确。
1.新建ICE_DEMO空白解决方案,在此解决方案中添加新项目;
2.新建一个Visual C++项目,选择Win32静态库空白项目,名为Slice。添加新文件名为Printer.ice,输入内容如下:
interface Printer
{
void printString(string s);
}
用命令行程序编译它,命令如下“slice2cpp printer.ice”,结果应该会生成Printer.h、Printer.cpp两个文件,将之加入Slice工程。(如果没有生成相应结果,则系统环境设置可能不正确,对照前述步骤重新设置)。
对于Slice项目的项目属性还需要进行如下设置:
在使用VS创建Ice的C++项目时记得将项目属性中的“运行时库”设置为“多线程调试 DLL (/MDd)”、"启用运行时类型信息“设置为”是“,”附加依赖项“中添加”Iced.lib IceUtild.lib setargv.obj“。
3.新建一个Visual C++项目,选择Win32控制台空白项目,名为Server,并添加引用项目Slice。新建Server.cpp文件,内容如下:
#include <Ice/Ice.h>
#include "../Printer.h"(按实际路径)
using namespace std;
using namespace Demo;
class PrinterI : public Printer {
public:
virtual void printString(const string & s,
const Ice::Current &);
};
void
PrinterI::
printString(const string & s, const Ice::Current &)
{
cout << s << endl;
}
int
main(int argc, char* argv[])
{
int status = 0;
Ice::CommunicatorPtr ic;
try {
ic = Ice::initialize(argc, argv);
Ice::ObjectAdapterPtr adapter
= ic->createObjectAdapterWithEndpoints(
"SimplePrinterAdapter", "default -p 10000");
Ice::ObjectPtr object = new PrinterI;
adapter->add(object,
ic->stringToIdentity("SimplePrinter"));
adapter->activate();
ic->waitForShutdown();
} catch (const Ice::Exception & e) {
cerr << e << endl;
status = 1;
} catch (const char * msg) {
cerr << msg << endl;
status = 1;
}
if (ic) {
try {
ic->destroy();
} catch (const Ice::Exception & e) {
cerr << e << endl;
status = 1;
}
}
return status;
}
对项目属性还需要进行如下设置:
在使用VS创建Ice的C++项目时记得将项目属性中的“运行时库”设置为“多线程调试 DLL (/MDd)”、"启用运行时类型信息“设置为”是“,”附加依赖项“中添加”Iced.lib IceUtild.lib setargv.obj“。
4. 再新建一个Visual C++项目,选择Win32控制台空白项目,名为Client,并添加引用项目Slice。新建Client.cpp文件,内容如下:
#include <Ice/Ice.h>
#include "../Printer.h"
using namespace std;
int
main(int argc, char * argv[])
{
int status = 0;
Ice::CommunicatorPtr ic;
try {
ic = Ice::initialize(argc, argv);
Ice::ObjectPrx base = ic->stringToProxy(
"SimplePrinter:default -p 10000");
PrinterPrx printer = PrinterPrx::checkedCast(base);
if (!printer)
throw "Invalid proxy";
printer->printString("Hello World!");
} catch (const Ice::Exception & ex) {
cerr << ex << endl;
status = 1;
} catch (const char * msg) {
cerr << msg << endl;
status = 1;
}
if (ic)
ic->destroy();
return status;
}
对项目属性还需要进行如下设置:
在使用VS创建Ice的C++项目时记得将项目属性中的“运行时库”设置为“多线程调试 DLL (/MDd)”、"启用运行时类型信息“设置为”是“,”附加依赖项“中添加”Iced.lib IceUtild.lib setargv.obj“。
5.在解决方案管理器的解决方案上点击右键,选择批生成Debug版本,然到用资源管理器到两个解决方案的目录下的Debug文件夹中执行生产的可执行文件。先运行server.exe, 然后运行client.exe, 哈哈, 是不是在server.exe的窗口里出现了Hello World!(运行一次client.exe,出现一条)
(待修改)
浙公网安备 33010602011771号