Задать вопрос
@Danila_Pilipenko

Проблема с подкючением TDLib в CMakeList.txt. Как решить проблему undefined reference to...?

Привет, я скачал TDLib на Windows вместе с Qt6. До этого сделал проект-приложение для работы с сессиями, но только делал это всё на Arch Linux. Потом решил скомпилировать проект под Windows, скачал виртуалку, перенёс проект, и тут я сталкиваюсь с проблемой:

C:\Users\Tabyretka\Desktop\main\zxc\main\tdapp.cpp:29: ошибка: undefined reference to `td::ClientManager::execute(td::tl::unique_ptr<td::td_api::Function>&&)'


Есть догадка - я работал сначала с версией 1.8.50, а на Windows уже скачал 1.8.51 версию TDLib. Точнее не знаю, влияет ли эта версия на другую, но думаю, не особо, так как в GitHub всё по-прежнему.

Вероятно, проблема в некорректных путях в CMakeLists.txt — где-то моя невнимательность сыграла роль.

Если нужна еще инфа - пришлю

Вот мой CMakeLists.txt:

cmake_minimum_required(VERSION 3.19)
project(TEMP_HexSpam LANGUAGES CXX)

set(TD_LIB_PATH "C:/Users/Tabyretka/Desktop/main/td/tdlib")
set(Td_DIR "${TD_LIB_PATH}/lib/cmake/Td")
list(APPEND CMAKE_PREFIX_PATH "${Td_DIR}")

find_package(Qt6 6.5 REQUIRED COMPONENTS Core Widgets)
find_package(Qt6 REQUIRED COMPONENTS Core)
find_package(Td 1.8.51)

qt_standard_project_setup()

qt_add_executable(TEMP_HexSpam
    WIN32 MACOSX_BUNDLE
    main.cpp
    main/mainwindow.cpp
    main/include/mainwindow.h
    main/include/tdapp.h
    main/tdapp.cpp
    main/mainwindow.ui
    src/include/authinput.h
    src/authinput.cpp
    src/include/core.h
    src/core.cpp
)

target_link_libraries(TEMP_HexSpam
    PRIVATE
        Qt::Core
        Qt::Widgets
        Td::TdStatic
)
target_link_libraries(TEMP_HexSpam PRIVATE Qt6::Core)

set_property(TARGET TEMP_HexSpam PROPERTY CXX_STANDARD 17)

include(GNUInstallDirs)

install(TARGETS TEMP_HexSpam
    BUNDLE DESTINATION .
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)

qt_generate_deploy_app_script(
    TARGET TEMP_HexSpam
    OUTPUT_SCRIPT deploy_script
    NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})


Вот часть, где эта проблема (tdapp.cpp):

TdApp::TdApp() {
  td::ClientManager::execute(
      td_api::make_object<td_api::setLogVerbosityLevel>(1));
  client_manager_ = std::make_unique<td::ClientManager>();
  client_id_ = client_manager_->create_client_id();
  send_query(td_api::make_object<td_api::getOption>("version"), {});
}


Вот часть с .h:

private:
  using Object = td_api::object_ptr<td_api::Object>;
  std::unique_ptr<td::ClientManager> client_manager_;
  std::int32_t client_id_{0};
  • Вопрос задан
  • 13 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы