gpt4 book ai didi

c++ - Visual Studio 2010 中的动态和静态链接和部署

转载 作者:可可西里 更新时间:2023-11-01 17:16:43 26 4
gpt4 key购买 nike

我在 Visual Studio 2010 中有一个非托管 C++ 项目。它使用了 boost、glut 和供应商提供的另一个库。

我已经设置了项目来创建一个更“独立于 dll”的可执行文件。所有boost库都是静态链接的,可执行文件所在目录不需要dll。

对于 Glut 也是一样,我链接了静态 glut32.lib 而不是 glut32.dll,同样没问题。

我为运行时库选择了 NON-dll 版本,即多线程调试(用于调试配置)和多线程用于发布配置。

现在,我之前提到的供应商提供了两个备选方案 Vendor.lib 和 Vendor.dll。

Vendor.lib 添加在 Linker->Additional dependencies 中,但在运行时我总是必须将 Vendor.dll 放在可执行文件的同一目录中,否则运行时环境会提示,因为它找不到 Vendor。 dll库。

我该如何解决这个问题?我想避免将 .dll 文件放在每个目录中。

我不想将 dll 放在与 exe 相同的目录中,一般而言,在 Visual Studio 中部署非托管 C++ 控制台应用程序的准则是什么?

我知道有很多关于这个论点的问题和网页,但没有一个能阐明我这一点。

一些想法?

最佳答案

微软处理这个问题的方式有点搞笑:当你创建一个.dll,您还创建了一个 .lib,其中包含.dll。您必须链接到 .lib 才能加载 .dll运行时,但是这个 .lib 仍然不是静态库。如果您的供应商提供静态链接的版本,要么没有 .dll,要么两个 .lib(可能在不同的目录中或具有不同的名称)。这只是微软让严肃的开发变得更重要的另一个例子比必要的困难。

关于c++ - Visual Studio 2010 中的动态和静态链接和部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9567602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com