Visual Studio объединяет DLL в консольное приложение

У меня очень простая программа для упрощения, как показано ниже ...

#include <openssl/evp.h>
int main (int argc, char *argv[])
{
        EVP_CIPHER_CTX ctx;
        EVP_CIPHER_CTX_init(&ctx);
}

Он ссылается на 1 функцию в DLL (libeay32.dll из openSSL). Я создаю его с настройками «Linker-> Input-> Additional Dependencies->», указывающими на то, где хранится libeay32.lib. Однако, когда вы запустите, он будет жаловаться: «Это приложение не удалось запустить, потому что LIBEAY32.DLL не был найден». Я хочу построить его, чтобы эта DLL была встроена в исполняемый файл, чтобы не нужно было искать ее на клиентских машинах.

Если вы можете помочь, не могли бы вы объяснить это небольшими шагами, чтобы я мог понять, поскольку я новичок в Visual Studio.


person Community    schedule 01.12.2009    source источник


Ответы (4)


Вы просите статически связать свой исполняемый файл.

Вот руководство о том, как заставить OpenSSL компилироваться в статическую библиотеку на различных платформы.

person Kilanash    schedule 03.12.2009

Это не совсем то, о чем вы просите, но вы можете просто поместить файл DLL в ту же папку, что и ваш скомпилированный двоичный файл.

person Cory Petosky    schedule 01.12.2009

К сожалению, в настоящее время вы не можете включить dll в исполняемый файл .Net с помощью Visual Studio.
Некоторым людям удалось решить эту проблему, используя вместо этого Mono.

Вот несколько ссылок, по которым это обсуждается:

person Nifle    schedule 01.12.2009
comment
-1. Никакого .NET, не связанного с компоновщиком. Просто отсутствует DLL при запуске приложения. - person jrbjazz; 03.12.2009
comment
Но он спросил, может ли он включить его в exe. И это вопрос, на который я ответил. - person Nifle; 03.12.2009

Проблема не связана с компоновщиком или Visual Studio. Проблема заключается в запуске приложения. Вы должны поместить библиотеку libeay32.dll в каталог, который включен в PATH, или в тот же каталог, где находится исполняемый файл.

РЕДАКТИРОВАТЬ: проверьте Упаковка exe + dll в один исполняемый файл (не. NET)

HTH.

person jrbjazz    schedule 03.12.2009
comment
Цитата из вопроса выше. Я хочу создать его, чтобы эта DLL была встроена в исполняемый файл, чтобы не нужно было искать ее на клиентских машинах. - person Nifle; 03.12.2009