Кросс-платформенная сборка завершается неудачно с неопределенной ссылкойC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Кросс-платформенная сборка завершается неудачно с неопределенной ссылкой

Сообщение Anonymous »


Здравствуйте, я действительно новичок в cmake и c++, и у меня почти есть самое базовое из базовых. Я пытаюсь запрограммировать приложение для Windows WSL и хочу иметь возможность впоследствии собрать его для Windows, чтобы я мог использовать его там.

Мой файл CmakeLists.txt выглядит так

cmake_minimum_required (ВЕРСИЯ 3.20) проект (folder_encryptor_cpp) установить (CMAKE_CXX_STANDARD 23) если (WIN32) include_directories("C:/WinCPP/include") include_directories("C:/WinCPP/include/sodium") link_directories("C:/WinCPP/lib") сообщение(СТАТУС "WIN 32") add_executable(folder_encryptor_cpp main.cpp) target_link_libraries(folder_encryptor_cpp ЧАСТНЫЙ C:/WinCPP/lib/libsodium.a) еще() find_library (натрий-натрий) сообщение(СТАТУС "Linux") add_executable(folder_encryptor_cpp main.cpp) target_link_libraries (folder_encryptor_cpp ЧАСТНЫЙ натрий) конециф() Для Linux библиотека, которую я хочу использовать (sodium), устанавливается с помощью команды make install по пути по умолчанию /usr/local/ и ее можно найти при сборке для Linux.

Дерево файлов Windows выглядит так

C:/WinCPP -включать -натрий -otherHeaders.h -натрий.ч -bin -libsodium-26.dll -lib -libsodium.a -libsodium.la -libsodium.dll.a при попытке сборки на компьютере с Windows я получаю следующий результат

C:\Projects\folder-encryptor-cpp\cmake-build-mingw>cmake --build . [ 50%] Создание объекта CXX CMakeFiles/folder_encryptor_cpp.dir/main.cpp.obj [100%] Связывание исполняемого файла CXXfolder_encryptor_cpp.exe CMakeFiles\folder_encryptor_cpp.dir/objects.a(main.cpp.obj):main.cpp:(.text.startup+0x6f): неопределенная ссылка на `crypto_generichash' Collect2.exe: ошибка: ld вернул 1 статус выхода CMakeFiles\folder_encryptor_cpp.dir\build.make:95: не удалось выполнить рецепт для целевого объекта «folder_encryptor_cpp.exe». mingw32-make.exe[2]: *** [folder_encryptor_cpp.exe] Ошибка 1 CMakeFiles\Makefile2:81: рецепт для цели «CMakeFiles/folder_encryptor_cpp.dir/all» не выполнен mingw32-make.exe[1]: *** [CMakeFiles/folder_encryptor_cpp.dir/all] Ошибка 2 Makefile:89: рецепт для цели «все» не удался mingw32-make.exe: *** [все] Ошибка 2 Я пытался установить натрия с помощью vcpkg, но это тоже не сработало по разным причинам. и у меня нет идей, поэтому буду очень признателен за любой ответ
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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