• 用ICE编写helloworld程序(VS2008,C++)


    因工作需要学习了ICE,先将简单的一个计算加法和减法的小程序和大家分享一下:(程序写的很傻很傻)

     (1)安装和配置ICE

     首先下载ICE安装包,我下载的是http://www.zeroc.com/download.html,Ice-3.4.2.msi

        安装完毕后,配置环境变量,(我的电脑右键->属性->高级->环境变量,将你的安装目录加入如:C:/Programs file/Zeroc/Ice-3.4.2/bin)。

    设置完后,打开cmd,输入slice2cpp看看是不是有命令提示,如果有说明正确,如果没有次命令可能是环境变量配置错误,仔细检查一下。

    (2)打开VS2008,建立新工程Server,新增.ice文件。(如果此时还没有的话,选择Tools->Add-in Manger,选中Ice-3.4.2 visual studio add-in 和visual Assiant X。)编写Caculator.ice

    module MCal
    {
        interface Cal
        {
            int add(int num1,int num2);
            int sub(int num1,int num2);  
        };
    };

    (3)编译Caculator.ice会生成Caculator.h 和Cacultor.cpp两个文件。

    编译方法一:打开cmd,输入slice2cpp Caculator.ice的路径 ,如slice2cpp D:\TestIce\TestIce\Caculator.ice。或许在你建立的工程中找不到这两个文件,搜寻一下,看看在哪,然后将这两个文件放在Caculator.ice的目录下。

    编译方法二:用vs2008编译,编译前需要进行下设置。选择Tools->External Tools,Add如下:

    然后设置Caculator的属性,Custom Build Step->General,设置如下:

    那么就可以编译Caculator.ice文件啦。

    (4)编译译成功后,建立服务器端CaculatorServer.cpp,type.h

    CaculatorServer.cpp:

    #include<Ice/Ice.h>
    #include<Ice/Application.h>
    #include<iostream>

    #include"type.h"
    using namespace std;

    CalI::CalI()
    {
       num1d=0;
       num2d=0;
    }
    CalI::~CalI()
    {

    }
    int CalI::add(int num1, int num2, const Ice::Current &)
    {
        int sumv=0;
        sumv=num1+num2;
        return sumv;
    }
    int CalI::sub(int num1,int num2,const Ice::Current&)
    {
     int difv=0;
     if (num1>num2)
     {
         difv=num1-num2;
         return difv;
     }
     else
     {
        cout<<"there is some wrong!"<<endl;
        return 0;
     }
    }

    class CalApp:virtual public Ice::Application
    {
    public:
        virtual int run(int,char *[]);
    };

    int CalApp::run(int,char *[])
    {
        //shutdownOnInterrupt();
        Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapterWithEndpoints(
            "Caladapter","default -p 10000");
        Ice::ObjectPtr object = new CalI();
        adapter->add(object,communicator()->stringToIdentity("Cal"));
        adapter->activate();
        communicator()->waitForShutdown();

        if(interrupted())
            cerr << appName() << ":recv signal,shutting down" << endl;

        return 0;
    }
    int main(int argc,char* argv[])
    {
        CalApp app;
        return app.main(argc,argv);
    }

    type.h

    #ifndef _TYPE_H
    #define _TYPE_H
    using namespace std;
    using namespace MCal;
    class CalI:public Cal
    {
    public:
        CalI();
        ~CalI();
        virtual int add(int num1,int num2,const Ice::Current&);
        virtual int sub(int num1,int num2,const Ice::Current&);
    private:
        int num1d;
        int num2d;
    };

    #endif 

    编译成功,如果有很多错误,可能是没有加入库文件iced.lib和iceutild.lib

    如果成功,服务器端建立成功。

    (4)重新建立工程,Client,建立客户端CalculatorClient.cpp

    将生成的Calculator.h 和Calculator.cpp加入Client工程中,然后建立CalculatorClient.cpp

    #include <Ice/Ice.h>
    #include <Ice/Application.h>
    #include "Calculator.h"
    #include<iostream>

    using namespace std;
    using namespace MCal;

    //#define RC_List "/home/tester/Key_Checking/ATT_RC/RMT_B109P_EU_Set.txt"
    //#define RC_Data "/home/tester/Key_Checking/ATT_RC/RMT_B109P_EU_Set.dat"

    class MyApp : virtual public Ice::Application
    {
    public:
        virtual int run(int,char*[]);
    };

    int MyApp::run(int,char*[])
    {
        Ice::ObjectPrx base = communicator()->stringToProxy("Cal:default -p 10000");
        CalPrx calculator = CalPrx::checkedCast(base);
        if(!calculator)
            throw "Invalid proxy!";
            cout<<calculator->add(1,2)<<endl;
           
            cout<<calculator->sub(56,12)<<endl;
       
       
        //Calc->Close();
        return 0;
    }

    int main(int argc,char* argv[])
    {
        MyApp app;

        return app.main(argc,argv);
    }

  • 相关阅读:
    牛客训练三:处女座的训练(贪心)
    牛客训练二:处女座的砝码(数学题)
    牛客训练二:处女座的签到题(STL+精度+三角形求面积公式)
    牛客训练:小a与黄金街道(欧拉函数+快速幂)
    数论二(快速幂)
    数论一(欧拉函数+费马小定理)
    字典树模板
    springboot在idea的RunDashboard如何显示出来
    网关集成Swagger出现404错误
    maven一直加载2.0.0.M7 的 config server 失败
  • 原文地址:https://www.cnblogs.com/jewell/p/2140787.html
Copyright © 2020-2023  润新知