【问题标题】:How to add a DLL to a VS2010 C++ project如何将 DLL 添加到 VS2010 C++ 项目
【发布时间】:2011-09-15 15:23:25
【问题描述】:

我有一个从源代码 (gdal) 编译的 DLL。我有一个简单的 C++ Win32 控制台项目,它有一个源文件,但我想链接到那个 DLL。目前,当我尝试运行该项目时,它可以正确编译,但说找不到 DLL。如果我将 DLL 移动到与 DLL 相同的目录,exe 将运行。有没有办法让我的输出 EXE 包含 DLL,这样我就可以将一个文件移动到另一个系统并运行它,而无需将 DLL 与 exe 一起发送。

如何在 VS2010 中实现这一点?

【问题讨论】:

    标签: c++ visual-studio-2010


    【解决方案1】:

    除非您拥有 .dll 的原始源代码,重新编译为静态库 (.lib),然后静态链接到它,否则我不相信有办法将动态链接库“包含”在可执行文件中.

    【讨论】:

    • 有!将 DLL 作为资源嵌入到可执行文件中,在启动时将其取出到磁盘,然后动态加载! 请不要这样做
    【解决方案2】:

    您需要在路径中或当前目录中的 DLL 才能运行您的应用程序。这就是它与 DLL 一起工作的方式。

    对于静态库,链接会将库代码嵌入到您的应用程序中。如果您不能或不想让 DLL 可用,您可以将 DLL 更改为静态库。

    【讨论】:

    • 请务必阅读您的第三方工具(在本例中为 gdal)的许可证。有些许可证不喜欢静态链接。
    • 这是 MIT 风格的,应该没问题。
    • 是的,并且可能会出现其他问题,尝试将其作为静态库进行。将 DLL 与 exe 一起保存是最简单的方法。
    【解决方案3】:

    由于您是从源代码编译它,您只需将源文件添加到您的项目中,然后将其直接构建到您的可执行文件中。

    【讨论】:

      【解决方案4】:

      您可以在 Visual Studio 项目中创建一个构建后事件,该事件运行一个脚本以将 DLL 复制到可执行文件的路径。

      然后,当您部署应用程序时,安装程​​序将能够为您处理 DLL 管理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-07
        • 2011-12-02
        相关资源
        最近更新 更多