Я не понимаю, что вызывает создание dllC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Я не понимаю, что вызывает создание dll

Сообщение Anonymous »

Я использую 3 библиотеки, подключил их все с помощью vcpkg, используя static, скомпилировал в Release/MT, но не понимаю, почему 2 из них создаются динамически:

Код: Выделить всё

libcrypto-3-x64.dll
и ssh.dll
С помощью DependencyWalker я увидел, что самому файлу .exe напрямую требуется только ssh.dll, и Для ssh.dll требуется libcrypto-3-x64.dll.
С jsoncpp.lib проблем нет.
Я добавил их в проект соответственно:

Код: Выделить всё

"C:\Program Files\Microsoft Visual Studio\2022\vcpkg\packages\openssl_x64-windows-static\lib;C:\Program Files\Microsoft Visual Studio\2022\vcpkg\packages\libssh_x64-windows-static\lib;C:\Program Files\Microsoft Visual Studio\2022\vcpkg\packages\jsoncpp_x64-windows-static\lib"
Я также добавил соответствующие библиотеки в список дополнительных зависимостей:

Код: Выделить всё

"$(CoreLibraryDependencies);%(AdditionalDependencies)Crypt32.lib;ws2_32.lib;ssh.lib;jsoncpp.lib;libcrypto.lib"
Но дело в том, что libcrypto.lib нужны и другие библиотеки Windows, которые я тоже включаю (без указания пути к ним):

Код: Выделить всё

Crypt32.lib;ws2_32.lib
Также я использую аналогичные настройки включения и прагмы:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 

#pragma comment(lib, "Crypt32.lib")
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "jsoncpp.lib")
#pragma comment(lib, "libcrypto.lib")
#pragma comment(lib, "ssh.lib")
Возможно, дело в подключении заголовочных файлов .h (

Код: Выделить всё

openssl/evp.h
, libssh/sftp.h, fcntl.h) из libssh и openssl?
Я понимаю, что проблема скорее всего в Crypt32. lib и

Код: Выделить всё

ws2_32.lib
, но я новичок и не понимаю, как это исправить. Я не смог найти в Интернете способа статически соединить эти две библиотеки. Конечно, я мог бы потратить время сам и найти решение, но я уже потратил весь день на понимание статической компиляции и поэтому прошу вашей помощи.
Что я могу добавить? Проблема только с ssh.lib, с libcrypto.lib проблем нет (проверено). Скорее всего ssh.lib нельзя сделать статическим, что очень печально. Но если у кого-то есть идеи, буду рад.

Подробнее здесь: https://stackoverflow.com/questions/786 ... l-creation
Ответить

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

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

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

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

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