Visual Studio将DLL合并到控制台应用程序中

时间:2009-12-01 10:52:10

标签: visual-studio-2008 linker openssl

我有一个非常简单的程序来简化事情,如下所示...

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

它引用DLL中的1个函数(来自openSSL的libeay32.dll)。我使用设置“Linker-&gt; Input-&gt; Additional Dependencies-&gt;”构建它指向libeay32.lib存储的位置。但是当你运行它时会抱怨“此应用程序无法启动,因为找不到LIBEAY32.DLL”。我想构建它,以便我可以将此DLL内置到可执行文件中,因此它不需要在客户端计算机上查找它。

如果你可以提供帮助,请用小步骤解释一下,这样我就可以理解,因为我是Visual Studio的初学者。

4 个答案:

答案 0 :(得分:1)

您要问的是link statically您的可执行文件。

这是关于如何让OpenSSL在各种平台上编译成静态库的guide

答案 1 :(得分:0)

不幸的是,您目前无法使用Visual Studio在.Net可执行文件中包含dll。
有些人设法通过使用Mono来解决这个问题。

以下是一些讨论它的链接:

答案 2 :(得分:0)

这不是您要求的,但您可以将DLL文件放在与编译的二进制文件相同的文件夹中。

答案 3 :(得分:-1)

问题与链接器或Visual Studio无关。问题是运行应用程序。您必须将库libeay32.dll放在PATH中包含的目录中或可执行文件所在的目录中。

编辑:检查Packing an exe + dll into one executable (not .NET)

HTH。