我在 Linux 下的 Qt-Widget-Application 中成功使用了 mosquitto 库。我想对 Windows 7 MSVC2015 x64 做同样的事情,但我遇到了我不明白的链接器错误。
在我的 .pro 文件中使用这个片段,其中 C:\mosquitto 是下载和预编译的库 (.dll) 的路径。文件夹 devel 包含标题和 .lib 文件。
INCLUDEPATH += C:/mosquitto/devel
DEPENDPATH += C:/mosquitto/devel
LIBS += -LC:/mosquitto/devel -LC:/mosquitto -lmosquitto -lmosquittopp
我收到 14 个未解析符号的链接器错误,就好像根本没有库一样。我可以删除“LIBS”行,不会得到更多未解析的符号。如果我在 LIBS 变量中拼错了某些路径或名称,我会收到找不到 mosquitto.lib 的错误 - 所以路径通常是正确的。
一个提示可能是来自链接器的警告:library machine type 'X86' conflicts with target machine type 'x64'
. 所以我在 x64 中手动编译了库源。之后,同样出现的只有一个未解析的符号。为什么?
我不明白。在 Linux 下,这相对容易。我遇到 32/64 位问题了吗?还是我错过了其他一些依赖项?
更新:
-希望正确编译-x64-version 的未解析符号是public: virtual void __cdecl mosqpp::mosquittopp::on_message(struct mosqpp::mosquitto_message const *)
. 目前我只打开并发布到 MQTT-Connection:我没有明确使用 on_message(...) 。