安装和使用C++的MQTT Paho库

3
我希望我的问题可以简单解决。我应该使用mqtt协议和我的Raspberry Pi v2,所以现在我正在尝试使用Paho库:

http://www.eclipse.org/paho/

我使用C++语言,所以我首先编写了这些命令。

git clone http://git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.c.git
cd org.eclipse.paho.mqtt.c.git
make
sudo make install

然后这些

git clone http://git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.cpp.git
cd org.eclipse.paho.mqtt.cpp.git
make

现在我有两个问题:

  1. 我需要在我的文件中包括哪个库?我尝试编译Paho网站上的示例 https://www.eclipse.org/paho/clients/cpp/ ,但如果我包含C库"MqttClient.h"(在C示例中),它无法识别类似这样的类。我尝试了包含(在文档中找到),但编译器找不到它。
  2. 为什么启动Paho库的C++过程不安装任何东西?只有make命令创建库。我必须在编译命令中链接它吗?如何操作?

你在说什么?Git 和 C++ 有什么关系? - johnny 5
@johnny 5 我想知道我是否以错误的方式安装了 C++ 库。我该如何编译我的 C++ 文件?有没有库可以使用 -l 选项链接?当我运行 g++ -o example example.cpp 时,会返回一个错误,因为编译器找不到我已经包含的头文件(例如 client.h,其中定义了 mqtt 类)。如果有人能够解释一下如何安装、包含和编译,我将不胜感激。我不明白如何在要编译的 C++ 文件中调用库。 - thoraz
1个回答

1

目前在paho c++ git项目中,对于新用户构建不正确。执行make时会创建一个空的c++库,因此任何链接到该库的代码都将失败并出现未定义的方法。您可以通过运行此命令来检查库中可用内容。

nm -g lib/linmqttpp.so.0.1

您会看到它是空的。

如果您从网站复制并粘贴示例代码,则也无法正常工作。它需要除网站上的内容之外的其他代码。它只提供了一小段代码片段。

示例代码位于此目录中。 src/samples

paho c++ examples

当前示例文件的 make 文件将失败。

我刚刚向项目提交了一个补丁,以修复主要构建和示例文件构建。一旦应用该补丁,项目将正确构建,您可以开始修改示例文件。

关于 C++ 项目未安装的问题,这是因为 make 文件中没有目标来执行安装。如果您现在想要进行安装,请使用 sudo 权限将创建的文件复制到以下位置。 /usr/local/lib/

然后,您可以从任何项目访问共享库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接