Программа сбои без ошибок сборки при вызовах из включенных библиотекиC++

Программы на C++. Форум разработчиков
Anonymous
Программа сбои без ошибок сборки при вызовах из включенных библиотеки

Сообщение Anonymous »

Я нахожусь в процессе изменения проекта с Qmake на Cmake. Этот проект использует WinSparkle для автоматических обновлений, которые отлично работали при настройке QMake. Однако после перехода на Cmake программа не запустится, если будут вызоваться какие -либо функции из библиотеки Winsparkle. Это не производит никаких ошибок во время сборки. Если вызовы функции библиотеки Winsparkle прокомментированы, программа запускается правильно. Все остальные настройки были по умолчанию. Я добавил модификации к Cmakelists, чтобы включить библиотеку Winsparkle (я считаю, что это должно быть сделано вручную в создателе QT, я не смог найти что -либо в самой IDE для этого), и функция вызывает в main.cpp. Это использует самую последнюю версию Winsparkle.cmake_minimum_required(VERSION 3.19)
project(winsparkTest LANGUAGES CXX)

find_package(Qt6 6.5 REQUIRED COMPONENTS Core)

qt_standard_project_setup()

include_directories(../WinSparkle/include/)
link_directories(../WinSparkle/x64/Debug/)

add_library(WinSparkle SHARED ../WinSparkle/x64/Debug/WinSparkle.lib)

add_executable(winsparkTest
main.cpp

)

target_link_libraries(winsparkTest
PUBLIC
winsparkle
)

< /code>
main.cpp
#include
#include

int main(int argc, char *argv[])
{
std::cout
Я попытался исправить, предложенное здесь, но это не решило проблему. Я также сравнил функционирующий файл Qmake с новым файлом cmake, проверяя документацию, чтобы убедиться, что все выстроилось, и кажется, что файл Cmake должен делать то же самое, что и файл Qmake. При этом я не понимаю, что я делаю неправильно или почему нет ошибок сборки, если это результат. Если я запускаю программу с активным вызовом функции WinSparkle, это полностью из вывода приложения: < /p>
13:39:45: Debugging D:\ToolDev\winsparkTest\build\Desktop_Qt_6_8_2_MSVC2022_64bit-Debug\winsparkTest.exe ...
13:39:46: Debugging of D:\ToolDev\winsparkTest\build\Desktop_Qt_6_8_2_MSVC2022_64bit-Debug\winsparkTest.exe has finished.
< /code>
Где, если вызов функции прокомментирован, это выход: < /p>
13:39:53: Debugging D:\ToolDev\winsparkTest\build\Desktop_Qt_6_8_2_MSVC2022_64bit-Debug\winsparkTest.exe ...
int __cdecl main(int,char *[]) Program starts
13:39:57: Debugging of D:\ToolDev\winsparkTest\build\Desktop_Qt_6_8_2_MSVC2022_64bit-Debug\winsparkTest.exe has finished.
< /code>
Отказ напрямую связан с тем, скомпилируется или нет функциональный вызов, и программа даже не запускается, позвольте достичь этого вызова функции, если он присутствует. Точка останова на первой линии основной линии дает тот же результат, где программа не достигает точки останова перед сбоем. Это также указывает на то, что проблема состоит в том, что не с «q-stuff», поскольку программа работает, просто комментируя "win_sparkle_set_update_check_interval (3600);" в main.cpp. < /p>
Файл winsparkle.dll присутствует в каталоге сборки наряду с EXE, сгенерированным при компиляции. Для проверки здравомыслия я удалил этот файл, и процесс сборки автоматически его заменил.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ded-librar

Вернуться в «C++»