当前位置:   article > 正文

ActiveMQ-CPP编译

activemq-cpp

上篇文章介绍了ActiveMQ在C#中的应用,由于Apache.NMS的支持,ActiveMQ在C#中的应用显得很简单。可C++的应用实现起来就麻烦些了,因为还依赖第三方开源库的支持。今天折腾了大半天,终于成功编译ActiveMQ-CPP,趁热打铁,赶紧记录之。

 

首先列出要下载的东东:

1、ActiveMQ-CPP(3.1.2):http://activemq.apache.org/cms/

2、cppunit(1.12.1):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再下载。下载后解压到本地某个文件夹下,下面说明中的.../指存放这些资源的文件夹。

 

下面来看看如何实现ActiveMQ-CPP的编译,分几个步骤:

 

 

1、编译cppunit

打开.../cppunit-1.12.1.tar/cppunit-1.12.1/examples文件夹,用vc6打开打开examples.dsw,会发现该工程中有多个项目,我们关注的是cppunit和cppunit_dll,一个是cppunit的静态链接库,一个是cppunit的动态链接库。设置增加工程的include路径和library路径,分别指向.../CPPUNIT-1.12.1.TAR/CPPUNIT-1.12.1/INCLUDE和/CPPUNIT-1.12.1.TAR/CPPUNIT-1.12.1/LIB。编译cppunit或cppunit_dll项目生成链接库文件。为测试文件是否正确,可编译工程中的simple项目,生成simple.exe,在命令行执行,如果出现如下执行结果,说明cppunit编程成功。 

 

 

2、编译apr、apr-util、apr-iconv

用vc6打开.../apr-util-1.3.9/aprutil.dsw,vc6会提示你指定路径打开多个项目,那些项目文件分别位于.../apr-1.4.2-win32-src/apr-1.4.2和.../apr-iconv-1.2.1文件夹下。设置增加工程的include路径,分别是.../APR-1.4.2-WIN32-SRC/APR-1.4.2/INCLUDE和.../APR-ICONV-1.2.1/INCLUDE。接下来就可以编译了,只需编译libapr、libaprutil和libapriconv三个项目(他们依赖于apr、apriconv和aprutil,因此这三个项目也要先编译。编译aprutil时会生成apu.h,如果不编译aprutil,后面会遇到问题),会生成三个动态链接库和lib文件,把它们拷贝到一个文件夹下,如..../myAprLib,便于管理。

 

 

3、编译ActiveMQ-CPP library

用vs2005打开.../activemq-cpp-library-3.1.2/vs2005-build/vs2005-activemq-cpp.sln.

我们要编译vs2005-activemq项目。首先设置include路径,项目--》属性--》配置属性--》C/C++--》常规--》附加包含目录,增加如下四个路径:

.../cppunit-1.12.1.tar/cppunit-1.12.1/include

.../apr-1.4.2-win32-src/apr-1.4.2/include

.../apr-util-1.3.9/include

.../apr-iconv-1.2.1/include

现在可以开始编译了,如果第2步没有编译aprutil,编译过程中可能会遇到一个问题,编译器报错:apu.h找不到,切换到.../apr-util-1.3.9/include文件夹,发现有apu.h.in、apu.hw、apu.hnw,确实没有apu.h,打开第2步的工程编译一下aprutil即可。编译成功后会在.../activemq-cpp-library-3.1.2/vs2005-build/Debug下生成libactivemq-cppd.lib静态链接库,项目属性中设置的就是生成静态链接库,如果需要动态链接库可以修改项目属性设置。

 

 

4、测试libactivemq-cppd.lib

编译vs2005-activemq-example项目,首先设置该项目的include路径和library路径:

项目--》属性--》配置属性--》C/C++--》常规--》附加包含目录,增加如下三个路径:

.../apr-1.4.2-win32-src/apr-1.4.2/include

.../apr-util-1.3.9/include

.../apr-iconv-1.2.1/include

项目--》属性--》配置属性--》链接器--》常规--》附加库目录,增加.../myAprLib路径,并将.../myAprLib目录下的三个dll拷贝到.../activemq-cpp-library-3.1.2/vs2005-build/Debug文件夹下。编译vs2005-activemq-example,将在.../activemq-cpp-library-3.1.2/vs2005-build/Debug文件夹下生成vs2005-activemq-example.exe,执行该exe,就能看到ActiveMQ的消息发送和接收了(前提是要运行ActiveMQ服务器,见我上一篇文章:ActiveMQ在C#中的应用)。

由于libactivemq-cppd.lib是静态链接库,在vs2005-activemq-example编译时就将需要的代码编译到vs2005-activemq-example.exe中去了,执行时是不需要libactivemq-cppd.lib的,如果是动态链接库,执行时需要dll。

 

折腾ActiveMQ-CPP的一个原因是因为可能要写个MQ模块给客户使用,又不希望客户安装.NET FrameWork,vc2005或vc2008不选择CLR,就不需要.NET FrameWork了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/114450
推荐阅读
相关标签
  

闽ICP备14008679号