ActiveMQ-cpp的编译相当麻烦,网上也可以找到不少指定资料,可照着做有错误不知道怎么办,后来重要找到了一篇处理的错误的文章,自己也编译成功,主要的两篇参照文章会在文章最后给出。下面整理下,希望后来人不用再浪费时间。

需要下载的东西(版本最新的就行):
1、ActiveMQ-CPP: http://activemq.apache.org/cms/
2、cppunit: http://sourceforge.net/apps/mediawiki/cppunit/index.php?title=Main_Page
3、apr(apr, apr-util, apr-iconv 三个都要下载):http://apr.apache.org/download.cgi?Preferred=http%3A%2F%2Fapache.etoak.com
有下载不了的请百度、或google
下载到同一目录{dir},逐个解压到当前目录,然后重命名去掉目录名字的版本号,最后是下面4个文件夹:
{dir}\cppunit
{dir}\apr\
{dir}\apr-iconv\
{dir}\apr-util\
如果路径不这样,后面会需要修改头文件包含目录,比较麻烦...
1、编译cppunit
用vc6打开打开examples.dsw,指编译cppunit和cppunit_dll
2、编译libapr、libapriconv、libaprutil
用vc6打开{dir}\apr-util\aprutil.dsw,会提示让你指定路径去打开多个项目,如果上述路径正确,需要指定的就比较少,但不管多与少那些项目一定在:
{dir}\apr
{dir}\apr\build
{dir}\apr-iconv
{dir}\apr-iconv\build
全部打开后,我们需要的依次编译下面的工程:
//  如果出现错误请看下面第4节编译错误的处理  
apr
apriconv
aprutil
libapr
libapriconv
libaprutil
补充(2013-02-27):前三个为静态库,后三个为动态库,不论需要哪种,把这六个的debug和release版本都编译出来,不然可能缺少自动生成的头文件,编译完成后,在apr、apr-iconv、apr-util的目录下会有这样几个目录:
Debug(debug动态库)
Release(release动态库)
LibD(debug静态库)
LibR(release静态库)
3、编译ActiveMQ-CPP
补充(2013-02-27):建议使用apr、apr-iconv、apr-util的动态库,原因下面会讲。
补充(2013-02-27):建议编译时,debug版的activemq使用debug版的apr动态库,release版的activemq使用release版的动态库,所以后文的lib目录应该分为debugDLL和releaseDLL两个目录,用来编译两个版本的activemq。
将1、2编译出来的文件拷贝到{dir}\lib(方便管理):
cppunit.lib
cppunit_dll.lib
libapr-1.lib
libapriconv-1.lib
libaprutil-1.lib
cppunit_dll.dll
libapr-1.dll
libapriconv-1.dll
libaprutil-1.dll
//可能不需要这么多,我没测试,成功就行
最新的activemq-cpp是vc2008编译的,这里用的是vc2010,打开{dir}\activemq-cpp-library-3.4.0\vs2008-build\activemq-cpp.sln
补充(2013-02-27):无论编译还是以后使用都建议用vc2008,否则编译ReleaseDLL和使用Relase版都可能出问题。
也是有多个项目,我们只需要编译activemq-cpp就可以,编译前添加头文件搜索目录:
{dir}\cppunit\include
{dir}\arp\include
{dir}\apr-iconv\include
{dir}\apr-util\include
添加库搜索目录:
{dir}\lib
补充(2013-02-27):debug版的activemq添加{dir}\debugDLL,release添加{dir}\releaseDLL
编译activemq-cpp,会生成静态库:libactivemq-cppd.lib
可以选择编译成动态库,不过编译没通过,暂时还不知道原因
补充(2013-02-27):不建议用静态库,非常大,200多M和500多M,使用时每次编译程序都比较慢,而且在我测试时,就算使用静态库,还是需要apr的动态库libapr(很奇怪,应该是我哪里错了),没办法做到完全没有DLL。实际使用中我编译了ReleaseDLL和DebugDLL,在自己的程序中debug使用DebugDLL,release使用ReleaseDLL。
使用中只需要下面的几个文件:
activemq-cpp.lib(debug版为activemq-cppd.lib,只需要编译这一个lib即可)
activemq-cpp.dll(debug版为activemq-cpp.dll)
libapr-1.dll
libapriconv-1.dll
libaprutil-1.dll
编译完成后可以编译此方案中的activemq-cpp-example,测试下activemq-cpp,记得要加入头文件目录、库目录,如果运行时没有找到DLL,还需要把依赖的DLL复制到运行目录
4、第2节编译错误处理
可能出现的错误及处理:
1)没有找到strings.h和inet.h 错误:
打开httpd-2.2.11\srclib\apr\include\apr_want.h 文件,把以下行注释掉:
#if APR_HAVE_STRINGS_H
#include <strings.h>
#endif
#if APR_HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
2)提示不支持LDAP v2.0错误:
打开httpd-2.2.11\srclib\apr-util\include\apr_ldap.h ,注释此行:
#error Support for LDAP v2.0 toolkits has been removed from apr-util. Please use an LDAP v3.0 toolkit.
3)未定义SQLLEN或者SQLULEN
打开文件:httpd-2.2.11\srclib\apr-util\dbd\apr_dbd_odbc.c
文件头部定义:
typedef INT32 SQLLEN
typedef unsigned int SQLULEN
//双击定位到错误,在上面定义也可以,方便
4)LDAP_VENDOR_NAME 错误
打开httpd-2.2.11\srclib\apr-util\ldap\apr_ldap_init.c,注释掉它:
LDAP_VENDOR_NAME
5)WtsApi32.h没有包含错误
表示没有安装或配置Microsoft 的PlatformSDK,需要去微软网站上下载PlatformSDK,并安装。
6)awk 错误
这个错误是由于没有安装awk工具导致,可以先到http://www.gnu.org/software/gawk/ 下载一个gawk进行安装。如果安装的目录为:C:\Program Files\GnuWin32,在该目录下可以看到一个bin目录,需要把该目录添加到VC Executable files。完整路径可能为:C:\Program Files\GnuWin32\bin
主要参考链接:
http://blog.csdn.net/bodybo/article/details/5648234
http://zhouruijun163.blog.163.com/blog/static/1077156201132085315838/
本文最早写在51cto上:http://mayacong.blog.51cto.com/3724695/718458

转载于:https://www.cnblogs.com/toSeek/archive/2013/04/09/3011365.html

activemqcpp编译及可能的错误处理相关推荐

  1. 编译时遇到如下错误error C2061: syntax error : identifier 'THIS_FILE'

    上午写程序时,加入了前些写的一个类,编译时遇到如下错误: ...error C2061: syntax error : identifier 'THIS_FILE' .../new(35) : err ...

  2. PHP编译安装时常见错误解决办法,php编译常见错误

    PHP编译安装时常见错误解决办法,php编译常见错误 1.configure: error: xslt-config not found. Please reinstall the libxslt & ...

  3. Delphi xe5 编译报environment.proj错误的解决

    Delphi xe5 在Win64位下编译报 environment.proj 错误,网上有说明: http://hi.baidu.com/fly_king1228/item/9c85fccd8db4 ...

  4. PHP中间件ICE,ICE的安装配置,ICE常见编译和运行(异常)错误(自测Php版本安装部分,因为php版本跟ice版本不一样失败)

    ICE(Internet Communications Engine)是Zeroc提供的一款高性能的中间件.使用ICE能使得php(或c++,java,python)与java,c++,.net,py ...

  5. linux libvpx编译安装,linux编译安装时常见错误解决办法

    **configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution** 复 ...

  6. linux编译安装的报错,linux编译安装时常见错误解决办法

    This article is post on https://coderwall.com/p/ggmpfa 原文链接:http://www.bkjia.com/PHPjc/1008013.html ...

  7. Xcode常见的编译、运行等错误的解决

    Xcode常见的编译.运行等错误的解决 项目没找到Info.plist的错误 The solution for this particular instance of the error was &q ...

  8. [C++]Linux之Ubuntu下编译C程序出现错误:“ stray ‘\302‘或者‘\240‘ in program”的解决方案

    [C++]Linux之Ubuntu下编译C程序出现错误:" stray '\302'或者'\240' in program"的解决方案 参考文章: (1)[C++]Linux之Ub ...

  9. Beyond Compare反编译插件提示转换错误

    Beyond Compare反编译插件提示转换错误 一.问题 二.解决办法 2.1 下载配置文件 2.2 配置到BC 三.效果 一.问题 Beyond Compare是一款文件差异比较软件,java开 ...

最新文章

  1. VTK:网格之DeformPointSet
  2. 交流充电桩电路图_直流充电桩和交流充电桩给电动汽车充电过程中是如何工作的?...
  3. MySQL临时表(转)
  4. 60-100-020-使用-MySQL 的Show Profile命令
  5. php 生成txt,php批量生成html与txt文件
  6. 谷歌开源了量子算法框架CIRQ,拥抱NISQ新时代
  7. 浅析数据链路层的介质访问控制
  8. BFS(广度优先搜素,附例题)
  9. 《达芬奇•科学第一人》麦克•怀特
  10. 敏感数据加密存储方案
  11. c语言实现snn算法,Orkiszewski算法的C语言实现
  12. 【CP2K教程(三)】元动力学 (Metadynamics)与增强采样
  13. C++ API 设计 06 第一章 简介
  14. “二老板”何以疯行互联网?
  15. Linux清理Log日志,释放自增长的log文件
  16. 阅读笔记:软件需求十步走(三)
  17. Prior 、Posterior 和 Likelihood 的理解与几种表达方式
  18. 机器人履带底盘的悬挂和传动
  19. Couldn't find a tree builder with the features you requested: lxml.解决方案
  20. 2011年英语1Text2生词

热门文章

  1. python编程100例头条-我用Python编程语言做了一些神奇好玩的事情
  2. python手机版iphone-python如何绘制iPhone手机图案?(代码示例)
  3. python好吗-Python现在就业前景好吗?
  4. python使用input函数时、必须添加提示文字-Python中使用 input 函数来获取输入
  5. 用python画烟花-用python实现漂亮的烟花demo
  6. python入门指南 小说-Python 入门指南
  7. 黑客用python还是ruby-Python、Lua和Ruby之优劣
  8. python写一个游戏多少代码-使用Python写一个贪吃蛇游戏实例代码
  9. python读取excel某一行内容-python3读取excel文件只提取某些行某些列的值方法
  10. python好学实用吗-都说python很简单 真的很好学么?