Отсутствуют файлы.obj при связывании paho.mqtt.cpp на цели отладки Windows x64

Я попробовал два разных способа связать библиотеку paho.mqtt.cpp ( https://github.com/eclipse/paho.mqtt.cpp) с целью моего проекта отладки Windows x64.

Первый способ был таким, как описано в https://github.com/eclipse/paho.mqtt.cpp:

Сначала я скачал проект paho.mqtt.c ( https://github.com/eclipse/paho.mqtt.c) и собрал его с помощью MSVisualCommandPrompt Native x64:

> cd paho.mqtt.c
> cmake -G "Visual Studio 15 Win64" -Bbuild -H. -DCMAKE_INSTALL_PREFIX=C:\mqtt\paho-c
> cmake --build build/ --target install

Теперь я смог построить проект paho.mqtt.cpp следующим образом:

> cd ..\paho.mqtt.cpp
> cmake -G "Visual Studio 15 Win64" -Bbuild -H. -DCMAKE_INSTALL_PREFIX=C:\mqtt\paho-cpp -DPAHO_BUILD_SAMPLES=ON -DPAHO_WITH_SSL=OFF -DCMAKE_PREFIX_PATH=C:\mqtt\paho-c
> cmake --build build/ --target install

Построение этого пути приводит к созданию paho-mqtt3a.lib (paho.mqtt.c) и paho-mqttpp3-static.lib (paho.mqtt.cpp), которые я попытался связать с помощью следующего скрипта cmake:

cmake_minimum_required(VERSION 3.10)
project(paho-test)

add_executable(${PROJECT_NAME} main.cpp)

target_include_directories(${PROJECT_NAME}
    PUBLIC
        $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/extern/paho-c/include>
        $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/extern/paho-cpp/include>
)

target_link_libraries(${PROJECT_NAME} 
    ${CMAKE_SOURCE_DIR}/extern/paho-c/lib/paho-mqtt3a.lib
    ${CMAKE_SOURCE_DIR}/extern/paho-cpp/lib/paho-mqttpp3-static.lib
)

Построение приводит к следующим ошибкам компоновщика:

Severity    Code    Description Project File    Line    Suppression State
Error   LNK1120 1 unresolved externals  C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CMakeLists.txt   C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\simulator.exe    1   
Warning LNK4099 PDB 'paho-cpp-objs.pdb' was not found with 'paho-mqttpp3-static.lib(connect_options.obj)' or at 'C:\Users\optional\CMakeBuilds\3258d24a-75bf-e336-8921-c9caaf833551\build\x64-Debug (default)\paho-cpp-objs.pdb'; linking object as if no debug info    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CMakeLists.txt   C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\paho-mqttpp3-static.lib(connect_options.obj) 1   
Warning LNK4099 PDB 'paho-cpp-objs.pdb' was not found with 'paho-mqttpp3-static.lib(token.obj)' or at 'C:\Users\optional\CMakeBuilds\3258d24a-75bf-e336-8921-c9caaf833551\build\x64-Debug (default)\paho-cpp-objs.pdb'; linking object as if no debug info  C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CMakeLists.txt   C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\paho-mqttpp3-static.lib(token.obj)   1   
Warning LNK4099 PDB 'paho-cpp-objs.pdb' was not found with 'paho-mqttpp3-static.lib(will_options.obj)' or at 'C:\Users\optional\CMakeBuilds\3258d24a-75bf-e336-8921-c9caaf833551\build\x64-Debug (default)\paho-cpp-objs.pdb'; linking object as if no debug info   C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CMakeLists.txt   C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\paho-mqttpp3-static.lib(will_options.obj)    1   
Warning LNK4099 PDB 'paho-cpp-objs.pdb' was not found with 'paho-mqttpp3-static.lib(ssl_options.obj)' or at 'C:\Users\optional\CMakeBuilds\3258d24a-75bf-e336-8921-c9caaf833551\build\x64-Debug (default)\paho-cpp-objs.pdb'; linking object as if no debug info    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CMakeLists.txt   C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\paho-mqttpp3-static.lib(ssl_options.obj) 1   
Error   LNK2019 unresolved external symbol Log referenced in function "private: void __cdecl mqtt::token::on_success(struct MQTTAsync_successData *)" (?on_success@token@mqtt@@AEAAXPEAUMQTTAsync_successData@@@Z)  C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CMakeLists.txt   C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\paho-mqttpp3-static.lib(token.obj)   1   

Я понятия не имею, куда идти дальше. Итак, второй способ, которым я пытался связать библиотеку, это использовать способ, описанный здесь ( https://github.com/eclipse/paho.mqtt.cpp/issues/172):

libs/
  paho.mqtt.cpp/  <- paho.mqtt.cpp as git submodule
      paho.mqtt.c/  <- precompiled C lib
CMakeList.txt     <- see below
main.cpp

CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)

project(paho-test)

include_directories(libs/paho.mqtt.cpp/src libs/paho.mqtt.cpp/paho.mqtt.c/include)

add_subdirectory (libs/paho.mqtt.cpp)

add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} paho-mqttpp3)

в результате библиотека не находит предварительно скомпилированные библиотеки paho.mqtt.c, хотя проблема была решена на github:

Severity    Code    Description Project File    Line    Suppression State
Error       CMake Error at C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.12/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find PahoMqttC (missing: PAHO_MQTT_C_LIBRARIES
  PAHO_MQTT_C_INCLUDE_DIRS)     C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.12/Modules/FindPackageHandleStandardArgs.cmake  137 

Даже при явном указании cmake на соответствующие PAHO_MQTT_C_LIBRARIES и PAHO_MQTT_C_INCLUDE_DIRS сборка не завершается успешно:

Severity    Code    Description Project File    Line    Suppression State
Error   LNK1104 cannot open file 'paho-mqttpp3.lib' C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CMakeLists.txt   C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\LINK 1   

0 ответов

Другие вопросы по тегам