问题标签 [activemq-cpp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
409 浏览

c++ - 使用 activemq-cpp 库创建新线程期间的分段错误问题

我的环境是opensuse、gcc5、clion、active-mq 3.10.0。我错过了什么吗?启动程序后出现分段错误。

valgrind 的输出

0 投票
1 回答
198 浏览

c++ - 在运行时加载第 3 方 DLL 失败并出现未处理异常(Log4CXX、ActiveMQ)

我正在尝试在 32 位 C++ 控制台应用程序中使用 VS 2008 在 Windows 上运行开箱即用的 ActiveMQ 示例http://activemq.apache.org/cms/example.html 。

该项目已构建,但是当我运行该程序时,出现异常。

XXXXXX.exe 中 0x768b3e28 处的未处理异常:Microsoft C++ 异常:内存位置 0x0100f880 处的 std::length_error..

当尝试运行一个单独的项目和另一个 3rd 方 DLL (log4CXX) 时,我得到了完全相同的内存地址相同的异常。

路径设置

DLL 文件位于 Windows/System32 以及 Windows/SysWOW64 中。

我已将头文件路径添加到 Configuration Properties > C/C++ > Additional Include Directories。在链接器 > 输入 > 附加依赖项中,我有 ws2_32.lib libapr-1.lib activemq-cpp.lib。在链接器 > 常规 > 附加库目录中,我指定了存在 lib 文件的文件夹的路径。包含 lib 和头文件的路径,我相信这就是构建项目没有问题的原因。

0 投票
0 回答
649 浏览

c++ - 在 Release-DLL 中构建时出现 LNK2001 错误

我正在对 Apache ActiveMQ CMS 库进行一些更改(一个潜在的错误修复)。我已经修复了这个错误并在调试模式下对其进行了测试。现在我想让它的发布 dll 添加到我的项目中。当我尝试使用 Release-DLL 配置构建时,出现以下错误:

.lib 和 .exp 文件正在成功创建。请注意以下发现:

  • 它在调试(静态库)和发布(静态库)配置中编译得很好

请考虑以下配置:

  • 平台工具集:visual studio 2008 (v90)[我的构建需要]

  • 配置类型:Dynamic Library (.dll)

  • 整个程序优化:Use Link Time Code Generation*尝试No Whole Program Optimization但没有运气

  • 字符集:Not Set*根据调试和发布配置

  • C/C++ >> 常规 >> 调试信息格式:Program Database (/Zi)

  • C/C++ >> 优化:Maximize Speed (/O2)

  • C/C++ >> 代码生成 >> 运行时库:Multi-threaded DLL (/MD)*尝试使用 (/MDd) 但没有运气

  • C/C++ >> 预编译头文件:Not using precompiled headers

  • C/C++ >> 高级 >> 调用约定:__cdecl (/Gd)

  • 链接器 >> 输入:添加libapr-1.lib,因为它依赖于 Apache 运行时

  • 链接器>>调试>>生成调试信息:Yes (/DEBUG)

  • 链接器>>系统>>子系统:Windows (/SUBSYSTEM:WINDOWS)

  • 链接器>>高级>>目标机器:MachineX86 (/MACHINE:X86)

  • 链接器>>高级>>错误报告:PromptImmediately (/ERRORREPORT:PROMPT)

  • 在调试和发布配置中使用的包含路径和库是正确的

  • 我正在使用 Visual Studio 2010 速成版

DiscoveryTransport我更改的代码与类无关。这两天我一直在尝试。任何帮助/建议将不胜感激。

问候

0 投票
1 回答
640 浏览

swift - 用于 activeMQ 的 Swift 客户端

我们在 Swift 中是否有任何与 ActiveMQ 高度兼容的框架?(使用户能够创建/删除,以及主题和队列上的订阅/发布(通常))我已经尝试过 Moscapsule,它适用于主题但不适用于队列(显然)。提前致谢。

0 投票
1 回答
5695 浏览

c++ - 对符号“sem_close@@GLIBC_2.2.5”的未定义引用

我正在尝试编译一个使用 ActiveMQ 函数的项目(因此是库),但是我收到以下错误:

我必须说,代码方面我毫无疑问,它工作得很好。我在格式化计算机后开始出现此错误,其中 ActiveMQ 所需的几个库之一可能已经消失。libapr肯定是其中之一。

但是,我确实在我的计算机上安装了这个库。当我找到它时,我可以将其视为 w:

所以它就在那里。同样在我的 CMakeLists.txt 文件中,我将其称为:

所以我不知道是什么导致了错误。我到处看了看,仍然没有答案。

有什么想法吗?

PS:我的完整CMakeLists.txt:cmake_minimum_required(VERSION 2.8.3) project(some_project include(FindProtobuf)

0 投票
2 回答
3112 浏览

c++ - 如何在 Windows 上构建 Apache ActiveMQ-CPP(和 APR)?

我正在尝试获得一些用 C++ 编写的功能,以与位于 Linux 机器上的 Apache ActiveMQ(本机使用 JMS)进行通信。为了建立这种联系,我尝试在我的 Windows 7 机器(开发机器)上设置 Apache ActiveMQ-CPP,但我目前面临一些主要问题。

据我了解,ActiveMQ-CPP 依赖于 Apache Portable Runtime/APR,如此所述。我的问题是,我什至无法构建 APR,因此没有开始使用 ActiveMQ-CPP。我已经完全按照本指南进行操作,在并行目录中进行设置,将版本名称重命名为标准名称,并将启动项目更改为 libaprutil(使用动态库),但没有任何运气。在构建 APR 解决方案时,27 个项目中只有 13 个成功。我还尝试使用静态 aprutil 项目作为启动项目来构建解决方案,但没有任何改进。

解决方案是确保为 Visual Studio 6 提供更广泛的兼容性,因此我怀疑使用 Visual Studio 2010 是造成我的问题的原因。即使升级项目应该是可能的(如 APR 文档所述),在使用升级助手并尝试构建整个解决方案之后,我在项目中有几个(我认为是)缺少依赖项,请参阅第一个屏幕转储。许多错误与文件 iconv_module.obj ( error LNK2019: unresolved external symbol xxx referenced in function _iconv_getpath C:\work\apr-iconv\iconv_module.obj) 相关,如下方工具提示所示,该文件应在C:\work\apr-iconv. 该文件实际上位于不同的子文件夹中,具体取决于构建格式(我选择了“Release”和“Win32”),但我不确定这是否真的是一个问题。

我应该提一下,我对 C++ 完全陌生,并且对 C 的经验非常有限,所以也许只是我不理解手动链接的依赖项......如果打开提到的文件并查看中所述的函数错误消息,但是,代码显然也有问题,所以可能不是依赖关系,请参阅两个屏幕转储。

关于可能的解决方案,我被建议尝试手动构建每个项目,而不是一次构建整个解决方案,因此首先构建不依赖任何东西的库,依此类推。然而,这也没有成功。

也应该可以使用命令行来构建项目,这对某些人来说是诀窍(链接)。在较新版本的 Visual Studio 中,“msdev”似乎已被“devenv”取代,但即使考虑到这一点,在使用查找和替换后,构建仍然会抱怨“未找到 msdev”......也许不是最好的修复,对吧?

在搜索有类似问题的帖子时,我肯定并不孤单,但不幸的是,没有一个建议的解决方案对我有用。我看过的一些帖子是:Compile Apache APR on Windows and ActiveMQ-CPP and Visual Studio 2003

你们有没有使用较新版本的 Visual Studio 或 Windows 上的命令行构建 APR 的经验?或者更重要的是,让 ActiveMQ-CPP 在 Windows 上工作?

截图:

0 投票
1 回答
159 浏览

c++ - ActiveMq:持久队列和离线系统

我是 ActiveMQ 技术的新用户,但在使用这项技术时遇到了一些问题。

我有以下情况:

  1. 我有一个软件,在嵌入式(离线)ARM 设备中运行,它在运行时将一组视频存档在可插拔硬盘上。
  2. 有时(每天 4-5 个事件),我必须将警报事件与这些视频相关联,并将警报排队到持久队列中。
  3. 每月一次,我们必须提取硬盘并将其连接到另一个嵌入式在线ARM 设备,该设备应通知 ActiveMQ 服务器有关离线 ARM 设备生成的警报

现在我的问题是:如何将持久队列存储在硬盘上,以便离线 ARM 设备生成的事件可供在线 ARM 系统使用(在线和离线嵌入式设备之间的唯一“连接”是硬盘)?

请注意,我无法更改将消息传输到在线服务器的方式,因为它不是我公司开发的系统。

此致

乔瓦尼

0 投票
2 回答
620 浏览

openssl - ActiveMQ-CPP 3.9.4 是否支持 OpenSSL 1.1.0?

我正在尝试构建 Apache ActiveMQ-CPP 的最新版本,即 3.9.4。我已经构建了两个必需的依赖项,APR 和 OpenSSL。对于 OpenSSL,这是 1.1.0f 版本。我能够在没有 SSL 支持的情况下构建所有 4 种配置(Debug、DebugDLL、Release、ReleaseDLL)。但是,尝试使用 SSL 支持构建任何东西会导致许多错误:

..\src\main\decaf\internal\net\ssl\openssl\OpenSSLContextSpi.cpp(186): error C3861: 'CRYPTO_malloc_init': identifier not found
..\src\main\decaf\internal\net\ssl\openssl \OpenSSLSocket.cpp(667): error C2027: use of undefined type 'X509_extension_st'
C:\OpenSource\OpenSSL\1.1.0f\include\openssl/x509.h(79): 注意:见 'X509_extension_st' 的声明
。 \src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(667): error C2227: left of '->value' must point to class/struct/union/generic type
..\src\main\ decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(667): error C2227: left of '->data' must point to class/struct/union/generic type
..\src\main\decaf\internal\net \ssl\openssl\OpenSSLSocket.cpp(670):错误 C2027:使用未定义类型“X509_extension_st”
C:\OpenSource\OpenSSL\1.1.0f\include\openssl/x509.h(79):注意:见 'X509_extension_st' 的声明
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp (670): 错误 C2227: '->value' 的左边必须指向类/结构/联合/通用类型
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(670): 错误C2227:'->length' 左侧必须指向类/结构/联合/通用类型
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(670):错误 C2660:'ASN1_item_d2i' :函数不接受 3 个参数
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671):错误 C2027:使用未定义类型 'X509_extension_st'
C:\OpenSource\OpenSSL\1.1。 0f\include\openssl/x509.h(79): 注意: 见 ' 声明X509_extension_st'
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671): error C2227: left of '->value' must point to class/struct/union/generic type
..\src\ main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671): error C2227: left of '->length' must point to class/struct/union/generic type
..\src\main\decaf\internal \net\ssl\openssl\OpenSSLSocket.cpp(671): error C2198: 'X509V3_EXT_D2I': too little arguments for call
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671):错误 C2198:“X509V3_EXT_I2V”:调用的参数太少

自从在 3.2.0 中添加支持以来,发行说明没有提及任何关于 OpenSSL 的内容。但是,ActiveMQ-CPP 3.9.4 下载中包含的 README.txt 文件指出:

如果您希望使用 SSL 传输,那么您需要在系统上安装 OpenSSL 及其包含的内容。我们建议您使用 1.0.0 或更高版本以获得最佳性能和安全性,但 0.9.8 版本也可以工作。

这个 StackOverflow 问题似乎表明我的第一个错误(见上文)暗示 ActiveMQ-CPP 不支持 OpenSSL 1.1.0。但是,在ActiveMQ-CPP Jira 站点上似乎没有提交关于缺乏 OpenSSL 1.1.0 支持的问题,并且他们自己的文档明确指出我应该能够使用“1.0.0 或更高版本”。

有谁知道 ActiveMQ-CPP 3.9.4 是否支持 OpenSSL 1.1.0?

0 投票
0 回答
248 浏览

activemq - 使用 ActiveMQ-cpp 发送消息时内存使用量增加

使用 ActiveMQ-cpp 时,所有创建并使用发送消息的 ActiveMQ 客户端会cms::MessageProducer逐渐增加内存使用量。现在看起来每条消息发送大约 4Kb。valgrind 似乎没有任何内存泄漏,并且内存增加将继续,直到程序终止或使用所有可用的系统内存。

当消息被发送但没有被任何其他 ActiveMQ 客户端接收,以及消息只是由生产者发送而没有其他消费者时,内存会增加。似乎创建生产者的行为也会导致内存增加。Publish这是导致内存增加的调用示例代码。我也尝试过只使用一个session_用于创建目的地和生产者的成员变量,而不是每次都创建一个新会话。

因此,任何关于为什么以这种方式使用时内存会不断增加的MessageProducer想法。无论我如何使用这种模式,它似乎都在不断增加内存使用量。提前感谢您对此的任何帮助!

0 投票
2 回答
792 浏览

c++ - 静态链接 ActiveMQ-cpp

我正在创建一个 c++ 项目,我希望它在没有任何依赖关系的情况下以独立模式运行,因为它将部署在多个服务器上。

这是我的CMakeLists文件:

libactivemq-cpp.a 和 libapr-1.a 在我的项目目录中找到

但我make main在链接过程中遇到的错误是

和更多..

我不知道如何修复这些错误

有什么建议吗?