Visual Studio объединяет DLL в консольное приложение - PullRequest
2 голосов
/ 01 декабря 2009

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

#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.

Ответы [ 4 ]

1 голос
/ 03 декабря 2009

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

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

0 голосов
/ 01 декабря 2009

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

0 голосов
/ 03 декабря 2009

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

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

НТН.

0 голосов
/ 01 декабря 2009

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

Вот несколько ссылок, обсуждающих это:

...