【问题标题】:Visual Studio merging DLL into console applicationVisual Studio 将 DLL 合并到控制台应用程序中
【发布时间】:2009-12-01 10:52:09
【问题描述】:

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

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

它引用 DLL 中的 1 个函数(来自 openSSL 的 libeay32.dll)。我使用指向 libeay32.lib 存储位置的设置“链接器->输入->附加依赖项->”构建它。但是,当您运行它时会报错“此应用程序无法启动,因为未找到 LIBEAY32.DLL”。我想构建它,这样我就可以将这个 DLL 内置到可执行文件中,这样它就不需要在客户端机器上查找它。

如果您能提供帮助,请用小步骤解释一下,以便我能够理解,因为我是 Visual Studio 的初学者。

【问题讨论】:

    标签: visual-studio-2008 linker openssl


    【解决方案1】:

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

    这里有一个guide,介绍如何让 OpenSSL 在各种平台上编译成静态库。

    【讨论】:

      【解决方案2】:

      这并不完全符合您的要求,但您可以将 DLL 文件与已编译的二进制文件放在同一文件夹中。

      【讨论】:

        【解决方案3】:

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

        这里有一些讨论它的链接:

        【讨论】:

        • -1。与 .NET 无关,与链接器无关。只是在运行应用程序时缺少 DLL。
        • 但他问是否可以将其包含到 exe 中。这就是我回答的问题。
        【解决方案4】:

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

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

        HTH。

        【讨论】:

        • 引用上述问题。 “我想构建它,这样我就可以将这个 DLL 内置到可执行文件中,这样它就不需要在客户端机器上查找它了。
        猜你喜欢
        • 2022-01-01
        • 2014-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-17
        相关资源
        最近更新 更多