一、前言

SimpleAmqpClient一个易rabbitmq-c的c++包装。网上可找到的编译它的资料非常少,花了两天,费了些功夫讲其编译成功。记录以供参考。

我的OS:Win7旗舰版

我的编译环境:VS2010

二、准备

  1. boost-1.47.0 或者更新版
  2. librabbitmq-c 参考我上一盘文章
  3. cmake 2.8+ 用于编译CMake项目
  4. gtest 1.5+(可选,如需测试)
  5. Doxygen(可选,用于生产API文档)

三、编译

  1. 编译boost,参考http://archive.cnblogs.com/a/1979730/(建议使用--build-type=complete全编译,如果采用动态链接编译不会生成静态链接库文件,如libboost_chrono-vc100-mt-1_47.lib,编译SimpleAmqpClinet时会报链接错误:缺少libboost_chrono-vc100-mt-1_47.lib文件)。boost库文件命名规则参考http://blog.csdn.net/zzvnzz/article/details/7082263
  2. 安装cmake 2.8+
  3. 用CMake编译gtest 1.5+
  4. 安装Doxygen
  5. 编译SimpleAmqpClinet,CMake主要参数如下(gtest参数设置编译好的头文件和库文件目录):

四、SimpleAmqpClient

    1. 打开SimpleAmqpClient解决方案(位于F:\Users\zhulin\Downloads\RabbitMQ\SimpleAmqpClient\build)
    2. 在SimpleAmqpClient工程上右键Properties->Configration Properties->Linker->General->Additional Library Directories增加库文件路径路径F:\boost\boost_1_47_0\lib
    3. 全编译,此时会出现很多头文件错误,问题出在uint8_t、uint16_t、uint32_t等重定义,为避免该问题,在SimpleAmqpClient的每个.cpp文件开头加入头文件声明(amqp.h和amqp_framing.h之前)如:

#include <stdint.h>
#include <amqp.h>
#include <amqp_framing.h>

  1. 重新全编译,除test_api外全部编译成功。

dll位于F:\Users\zhulin\Downloads\RabbitMQ\SimpleAmqpClient\build\bin\Release,lib位于F:\Users\zhulin\Downloads\RabbitMQ\SimpleAmqpClient\build\lib\Release

 

posted @ 2012-04-10 17:41 OlawonZhu 阅读(22) 评论(0) 编辑

一、前言

由于项目需要用的rabbitmq的c/c++客户端,所以尝试编译rabbitmq-c(注:我的机器是Windows7旗舰版,编译环境是VS2010)。

二、准备工作

  1. 下载 rabbitmq-c 源码包 http://hg.rabbitmq.com/rabbitmq-c/
  2. 下载 rabbitmq-codegen 源码包 http://hg.rabbitmq.com/rabbitmq-codegen/
  3. 下载 python2.7 http://www.python.org/download/
  4. 下载 simplejson http://pypi.python.org/pypi/simplejson/
  5. 下载 CMake http://www.cmake.org/

三、安装

  1. 安装python并设置环境变量(参考http://jingyan.baidu.com/article/48b558e37fd8e67f39c09a6e.html)
  2. 安装simplejson(参考http://blog.csdn.net/disikexing/article/details/2343585)
  3. 安装CMake

四、编译

  1. 运行CMake
  2. 在Where is the source code 填下载的rabbitmq-c目录
  3. 在Where to build the binaries 填编译生成目录
  4. 点Configure按钮,此时会报“Cannot find rabbitmq-codegen”错,因为未设置rabbitmq-codegen的路径
  5. 在中间的框里讲RABBITMQ_CODEGEN_DIR就OK了,点Configure按钮正常。
  6. 点Generate按钮开始编译
  7. 打开生成的解决方案全编译,生成的dll和lib文件位于rabbitmq-c\librabbitmq\Release

 

posted @ 2012-04-06 18:29 OlawonZhu 阅读(42) 评论(0) 编辑

JDK环境是1.6 update 30

在Windows下安装Oracle10g时卡在一个进度不能进行下去,查看log日志

java.util.zip.ZipException: invalid entry size (expected 931307 but got 931309 bytes)  

  at java.util.zip.ZipInputStream.readEnd(Unknown Source)  at java.util.zip.ZipInputStream.read(Unknown Source)  

  at java.io.FilterInputStream.read(Unknown Source)  at oracle.sysman.oii.oiix.OiixFileOps.copyStream(OiixFileOps.java:1421)

  at oracle.sysman.oii.oiij.OiijFastJarExtracter.copyFileFromJar(OiijFastJarExtracter.java:258)  

  at oracle.sysman.oii.oiij.OiijFastJarExtracter.copyJarContents(OiijFastJarExtracter.java:194)

   at oracle.sysman.oii.oiij.OiijFastJarExtracter.extract(OiijFastJarExtracter.java:143)  

  at oracle.sysman.oii.oiij.OiijJarExtractQueue$OiijJarExtractWorker.run(OiijJarExtractQueue.java:341)

怀疑为JRE版本问题

查Google:Oracle 10g的jdbc驱动程序支持jdk1.4、jdk1.5,11g的支持jdk1.6。

换个10g 的仅服务端的安装程序重新安装,问题不再出现。

 

posted @ 2012-01-11 14:57 OlawonZhu 阅读(177) 评论(0) 编辑
摘要: 在动画结束时,Storyboard.TargetProperty设置的目标属性,不能再被设值了,好像该属性被Storyboard劫持了一样。查了MSDN,原来是动画结束后把该属性的值缓存起来,下次执行动画,即从该属性值开始。阅读全文
posted @ 2011-10-26 17:58 OlawonZhu 阅读(24) 评论(0) 编辑
摘要: string和Color的转换阅读全文
posted @ 2011-10-25 18:20 OlawonZhu 阅读(13) 评论(0) 编辑
摘要: 最近做一个将C++框架的OpenH323功能接口封装成供C#调用的动态链接库的工作,由于本人基本属于C++白痴,故封装过程中遇到诸多问题。多谢同事、头已经网上各位大牛的帮助,遇到的问题终归能够找到解决方法。为了避免以后再遇到同样的问题不从下手,且供未知如我般C++新手参考,记录如下; 一、C++的字符集 C++工程->属性->配置属性->常规->字符集有三个选项:未设置、使用Unicode字符集、使用多字节字符集。一般为了程序的移植和通用性,选择第二种,因为Unicode字符集是双字节字符集,包含世界各个国家绝大部分字符。可以使程序在多语言环境下运行而不出现乱码。 选择阅读全文
posted @ 2011-10-25 18:14 OlawonZhu 阅读(51) 评论(0) 编辑
摘要: OLE、OCX和ActiveX控件之间的比较阅读全文
posted @ 2011-10-25 18:12 OlawonZhu 阅读(440) 评论(0) 编辑