我有一个非常简单的程序来简化事情,如下所示...
#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的初学者。
答案 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。