此文将展示ONS C++ Windows SDK 整个调试过程,笔者直接使用sdk包中的example消息发送示例代码,开发环境为win7, 64位,Visual Studio Professional 2013(版本 12.0.21005.1 REL)。

下载最新sdk包(文中使用代码为2015年10月14号发布),并解压(本地保存目录为D:\Doc\ONS\C++\aliyun-ons-client-cpp-windows)。

在调试前请详细阅读使用文档说明ALIYUN_ONS_CLIENT_FOR_CPP_AND_NET_USER_GUIDE。

include提供了头文件,lib分别提供了32位和64位的依赖包(ONSClient4CPP.dll, ONSClient4CPP.lib, ONSClient4CPP.pdb),example提供了消息发送和消息消费的示例代码,本文使用的就是消息发送示例代码。

1. 新建项目

确定,点击下一步。

点击完成,项目已经创建好。

2. 创建源文件,并引入头文件

源文件,添加新建项,将example中ProducerExampleForEx内容复制过来。

头文件,添加现有项,将include文件夹中所有头文件添加进来。

项目右键->属性->C/C++->常规->附加包含目录,将头文件目录D:\Doc\ONS\C++\aliyun-ons-client-cpp-windows\include包含进来。

链接器->常规->附件库目录,将ONSClient4CPP.lib的目录D:\Doc\ONS\C++\aliyun-ons-client-cpp-windows\lib\32位包含进来。

以上进行的设置是针对32位的,如果用户需要调试64位,那么需要点击配置管理器,新建x64平台,且将64位ONSClient4CPP.lib所在目录包含进来,如下图。

链接器->输入->附件依赖项,将ONSClient4CPP.lib加进来。

3. 其他设置

C/C++->代码生成->基本运行时检查,置为默认值。

清单工具->输入和输出->嵌入清单,置为否。

4. 生成解决方案

这里选择的解决方案配置为Debug,可以看到相应的可执行文件ONSdemo.exe已经生成,位于目录D:\Program Files\vsProject\ONSdemo\Debug下;同时也可看到一些warn, 一是警告需要调用ONSClient4CPP.dll(见5), 二是警告没有处理异常e(用户需要根据自己的业务,后续加上处理异常的逻辑,增强程序健壮性)。

5. 调用dll

将ONSClient4CPP.dll,ONSClient4CPP.pdb和ONSdemo.exe置于相同目录D:\Program Files\vsProject\ONSdemo\Debug下即可。

sdk包中msvcp120.dll和msvcr120.dll是vs组件,一般在本地安装vs后,可在C:\Windows\System32里找到;如果没有,也不用着急,将sdk包中的这两个dll拷贝到C:\Windows\System32或者和ONSdemo.exe位于相同目录就可以了。

6. 启动调试

启动调试前,根据用户自己的数据,修改参数producerId, topic, AccessKey, SecretKey。

factoryInfo.setFactoryProperty(ONSFactoryProperty::ProducerId, "PID_xxxxxxxx");//在ONS控制台申请的producerId
factoryInfo.setFactoryProperty(ONSFactoryProperty::PublishTopics, "xxxxxxxxx");// 在ONS 控制台申请的msg topic
factoryInfo.setFactoryProperty(ONSFactoryProperty::MsgContent, "input msg content");//消息内容
factoryInfo.setFactoryProperty(ONSFactoryProperty::AccessKey, "xxx");//ONS AccessKey
factoryInfo.setFactoryProperty(ONSFactoryProperty::SecretKey, "xxxxxxxxx");// ONS SecretKey

producerId, topic需要提前在控制台创建,公网环境的topic可在本地测试使用,否则需要部署在相应地域ECS上才能正常使用ONS服务。

启动调试后,没有异常抛出,就说明消息成功发送了。

7. 检验消息是否发送成功

建议在消息中设置key属性,方便利用key值在控制台上查询消息。

例如:msg.setKey("ONSdemotest");

这里再次提醒,32位或者64位依赖包ONSClient4CPP的引入和Win32, x64平台的选择一定要一致;另外,如果使用其他版本vs,需格外留意,与文中其他设置 中的参数值保持一致。

ONS C++ Windows SDK 调试方法及注意事项的更多相关文章

  1. LeanCloud SDK 中秒杀70%问题的调试方法

    非常多同学在LeanCloud上遇到的不少问题,事实上能够自我解决的,如今介绍一下LeanCloud上的调试方法. LeanCloud 是通过 REST API来进行前后端分离的.这意味着当出现故障的 ...

  2. Windows Kernel Way 1:Windows内核调试技术

    掌握Windows内核调试技术是学习与研究Windows内核的基础,调试Windows内核的方式大致分为两种: (1)通过Windbg工具在Windows系统运行之初连接到Windows内核,连接成功 ...

  3. Windows 下常见的反调试方法

    稍稍总结一下在Crack或Rervese中比较常见的一些反调试方法,实现起来也比较简单,之后有写的Demo源码参考,没有太大的难度. ①最简单也是最基础的,Windows提供的API接口:IsDebu ...

  4. 安装 VS 2015 Update 2 + Windows SDK Tools 1.3.1 + Windows SDK 10586.212 后提示找不到 10586.0 SDK 问题的解决方法

    将 Visual Studio 2015 升级到 Update 2,并安装 Windows SDK Tools 1.3.1 和 Windows SDK 10586.212 后,有可能造成原本已安装的 ...

  5. Premiere Pro & After Effects插件开发调试方法

    在给Adobe Premiere Pro(PR)和Adobe After Effects(AE)插件开发时,对于实时调试插件有着很强的需求.除了业务需求外,单步调试插件还能够摸清楚Plugin和Hos ...

  6. Platform SDK、Windows SDK简介

    Platform SDK及Windows SDK是由微软公司出品的一个软件开发包,向在微软的Windows操作系统和.NET框架上开发软件和网站的程序员提供头文件.库文件.示例代码.开发文档和开发工具 ...

  7. Linux内核调试方法总结【转】

    转自:http://my.oschina.net/fgq611/blog/113249 内核开发比用户空间开发更难的一个因素就是内核调试艰难.内核错误往往会导致系统宕机,很难保留出错时的现场.调试内核 ...

  8. 【转】Linux内核调试方法总结

    目录[-] 一  调试前的准备 二  内核中的bug 三  内核调试配置选项 1  内核配置 2  调试原子操作 四  引发bug并打印信息 1  BUG()和BUG_ON() 2  dump_sta ...

  9. Linux内核调试方法总结

    Linux内核调试方法总结 一  调试前的准备 二  内核中的bug 三  内核调试配置选项 1  内核配置 2  调试原子操作 四  引发bug并打印信息 1  BUG()和BUG_ON() 2   ...

随机推荐

  1. Android ANR产生的原理和如何避免

    在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框.用户可以选择 ...

  2. android apk静默安装

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/47803149 之前有很多朋友都问过我,在Android系统中怎样才能实现静默安装呢 ...

  3. Mark一下,Android ListView的上下间隙

    困扰很久的问题,怎么给ListView上下加padding,可以跟随滚动的那种 android:paddingTop="10dp" android:paddingBottom=&q ...

  4. 深入.net(.net平台)

    S2A技能点: 1.学会“自己”进行大量复杂数据的管理(数据类型.集合.xml.文件) 2.学会“优化”代码编写--- 复用.可扩展.可替换(封装.继承.多态) 什么是“跨平台”---- 您的应用程序 ...

  5. google不能访问的根本解决方法

    最近中国的防火墙又调皮了.直接出现404了.以前通过IP访问的方式也失效了.难道这种问题能难倒我们这些做技术的IT工程师么?! 经过我的查询,我发现还是有大神在研究这块的.大神针对开发经常访问的网站做 ...

  6. 学习 HTML5-目录

    1.学习 HTML5-页面结构 2.HTML5标记 3.HTML5机构化语义元素 4.HTML5表单 5.HTML5媒体元素:Audio和Video 6.HTML5绘图API 7.HTML5 Canv ...

  7. 史上最详细“截图”搭建Hexo博客并部署到Github

    http://jingyan.baidu.com/article/d8072ac47aca0fec95cefd2d.html 大家也搭建过博客,很多时候,按着教程来做就可以了,但是我当时为了搭建Hex ...

  8. WPF学习之路(十二)控件(Range控件)

    ProgressBar 进度条,主要属性:Minimum\Maximun\Value, IsIndeterminate为True时,进度条会循环运转 <Grid> <Grid.Row ...

  9. 什么是Java实例初始化块

    在本篇文章,我将会使用一个例子展示什么是实例变量初始化块,实例初始化块和静态初始化块,然后说明在Java中实例初始化块是如何工作的. 执行顺序 查看下面的代码,你知道哪个先执行吗? package s ...

  10. 深入理解“HelloWorld”小程序

    对于每个Java程序员来说,HelloWorld是一个再熟悉不过的程序.它很简单,但是这段简单的代码能指引我们去深入理解一些复杂的概念.这篇文章,我将探索我们能从这段简单的代码中学到什么.如果你对He ...