ice配置与实例(VS2015)

ice配置与使用

  • 一、ice配置
  • 1、ICE安装
    • 1、进入程序包管理器(工具->NuGet包管理器->程序包管理器控制台)
    • 2、安装ice、ice builder、ice插件
      • 2.1、安装ice,选择项目,输入install-package zeroc.ice.v140 -version 3.7.1
      • 2.2、安装ice.builder.msbuild,输入install-package zeroc.icebuilder.msbuild
      • 2.3、 安装ice build插件
  • 二、ice实例
    • 1、配置
      • 1.1、新增Slice Files筛选器(选择项目,鼠标右键)
      • 1.2、修改项目属性
        • 1.2.1、设定ice文件编译输出路径
        • 1.2.2、包含ice输出目录
    • 2、代码编写
    • 三、linux安装ice**
      • 3.1、yum源配置
      • 3.2、安装

运行环境(VS2015)

一、ice配置

1、ICE安装

1、进入程序包管理器(工具->NuGet包管理器->程序包管理器控制台)

ice配置与实例(VS2015)_第1张图片

2、安装ice、ice builder、ice插件

2.1、安装ice,选择项目,输入install-package zeroc.ice.v140 -version 3.7.1

ice配置与实例(VS2015)_第2张图片
Tips:V140代表VS的版本,(V140<->VS2015,V120<->VS2013),3.7.1代表ice的版本

2.2、安装ice.builder.msbuild,输入install-package zeroc.icebuilder.msbuild

ice配置与实例(VS2015)_第3张图片

2.3、 安装ice build插件

ice配置与实例(VS2015)_第4张图片

二、ice实例

1、配置

1.1、新增Slice Files筛选器(选择项目,鼠标右键)

ice配置与实例(VS2015)_第5张图片

1.2、修改项目属性

1.2.1、设定ice文件编译输出路径

ice配置与实例(VS2015)_第6张图片

1.2.2、包含ice输出目录

ice配置与实例(VS2015)_第7张图片

2、代码编写

Test.ice

//Test.ice

module MyIceDemo
{
	interface TestDemo
	{
		void PrintData(string strData);
	}
}

Client

//Client.cpp

#include
#include
#include"Test.h"

using namespace MyIceDemo;
int main(int argc, char *argv[])
{
	int status(0);
	Ice::CommunicatorPtr ic;
	try 
	{
		ic = Ice::initialize(argc, argv);
		//tcp/udp必须小写
		auto base(ic->stringToProxy("SimplePrinter:tcp -h 127.0.0.1 -p 10000"));

		auto printer(Ice::checkedCast(base));
		if (!printer)
			throw std::runtime_error("invalid proxy");

		printer->PrintData("hello");
	}
	catch (const Ice::Exception& ex)
	{
		std::cerr << ex << std::endl;
		status = 1;
	}
	catch (const char* msg)
	{
		std::cerr << msg << std::endl;
		status = 1;
	}
	if (ic)ic->destroy();

	return status;
}

Server

//接口管理类
#include
#include
#include"Test.h"

class iceTestImpl :public MyIceDemo::TestDemo
{
public:
	iceTestImpl();
	~iceTestImpl();
	virtual void PrintData(std::string strData, const Ice::Current &);
};

//虚函数实现
void iceTestImpl::PrintData(std::string strData, const Ice::Current &)
{
	std::cout << strData.c_str() << std::endl;
}

//main.cpp

//Main.cpp
#include
#include "iceTestImpl.h"

using namespace MyIceDemo;
int main(int argc,char *argv[])
{
	int status(0);
	Ice::CommunicatorPtr ic;
	try
	{
		ic = Ice::initialize(argc, argv);
		auto adapter(ic->createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 10000"));
		auto servant(std::make_shared());
		adapter->add(servant, Ice::stringToIdentity("SimplePrinter"));
		adapter->activate();
		ic->waitForShutdown();
	}
	catch (const Ice::Exception & e)
	{
		std::cerr << e << std::endl;
		status = 1;
	}
	catch (const char * msg)
	{
		std::cerr << msg << std::endl;
		status = 1;
	}
	if (ic) 
	{
		try 
		{
			ic->destroy();
		}
		catch (const Ice::Exception & e)
		{
			std::cerr << e << std::endl;
			status = 1;
		}
	}
	return status;
}

三、linux安装ice**

3.1、yum源配置

cd /etc/yum.repos.d
sudo wget https://zeroc.com/download/Ice/3.7/el7/zeroc-ice3.7.repo

ls查看ice源
ice配置与实例(VS2015)_第8张图片

3.2、安装

3.2.1、Install Ice for C++, Python, PHP, and all Ice services.

sudo yum install ice-all-runtime ice-all-devel

3.2.2、Install Freeze for C++

 sudo yum install libfreeze-c++-devel freeze-utils

3.2.3、安装的版本号查看:icebox -v
在这里插入图片描述

你可能感兴趣的:(C++,ICE,ICE,linux,VS2015)