一、前言
SimpleAmqpClient是一个易用的rabbitmq-c的c++包装。网上可找到的编译它的资料非常少,花了两天,费了些功夫讲其编译成功。记录以供参考。
我的OS:Win7旗舰版
我的编译环境:VS2010
二、准备
- boost-1.47.0 或者更新版
- librabbitmq-c 参考我上一盘文章
- cmake 2.8+ 用于编译CMake项目
- gtest 1.5+(可选,如需测试)
- Doxygen(可选,用于生产API文档)
三、编译
- 编译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
- 安装cmake 2.8+
- 用CMake编译gtest 1.5+
- 安装Doxygen
- 编译SimpleAmqpClinet,CMake主要参数如下(gtest参数设置编译好的头文件和库文件目录):

四、SimpleAmqpClient
- 打开SimpleAmqpClient解决方案(位于F:\Users\zhulin\Downloads\RabbitMQ\SimpleAmqpClient\build)
- 在SimpleAmqpClient工程上右键Properties->Configration Properties->Linker->General->Additional Library Directories增加库文件路径路径F:\boost\boost_1_47_0\lib
- 全编译,此时会出现很多头文件错误,问题出在uint8_t、uint16_t、uint32_t等重定义,为避免该问题,在SimpleAmqpClient的每个.cpp文件开头加入头文件声明(amqp.h和amqp_framing.h之前)如:
#include <stdint.h>
#include <amqp.h>
#include <amqp_framing.h>
- 重新全编译,除test_api外全部编译成功。
dll位于F:\Users\zhulin\Downloads\RabbitMQ\SimpleAmqpClient\build\bin\Release,lib位于F:\Users\zhulin\Downloads\RabbitMQ\SimpleAmqpClient\build\lib\Release
一、前言
由于项目需要用的rabbitmq的c/c++客户端,所以尝试编译rabbitmq-c(注:我的机器是Windows7旗舰版,编译环境是VS2010)。
二、准备工作
- 下载 rabbitmq-c 源码包 http://hg.rabbitmq.com/rabbitmq-c/
- 下载 rabbitmq-codegen 源码包 http://hg.rabbitmq.com/rabbitmq-codegen/
- 下载 python2.7 http://www.python.org/download/
- 下载 simplejson http://pypi.python.org/pypi/simplejson/
- 下载 CMake http://www.cmake.org/
三、安装
- 安装python并设置环境变量(参考http://jingyan.baidu.com/article/48b558e37fd8e67f39c09a6e.html)
- 安装simplejson(参考http://blog.csdn.net/disikexing/article/details/2343585)
- 安装CMake
四、编译
- 运行CMake
- 在Where is the source code 填下载的rabbitmq-c目录
- 在Where to build the binaries 填编译生成目录
- 点Configure按钮,此时会报“Cannot find rabbitmq-codegen”的错,因为未设置rabbitmq-codegen的路径
- 在中间的框里讲RABBITMQ_CODEGEN_DIR就OK了,点Configure按钮正常。
- 点Generate按钮开始编译
- 打开生成的解决方案全编译,生成的dll和lib文件位于rabbitmq-c\librabbitmq\Release

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 的仅服务端的安装程序重新安装,问题不再出现。

