【问题标题】:Project contains more lib than dll files项目包含的 lib 多于 dll 文件
【发布时间】:2011-07-27 07:58:30
【问题描述】:
我尝试了解我下载的一个 Visual Studio 项目。有两个文件夹 bin 和 lib 文件夹。 lib文件夹中的lib文件数量大于bin文件夹中的dll数量。
我认为每个 dll 文件都可以有一个 lib 文件(目标文件库)。所以一个项目中lib文件的数量等于或小于dll的数量。但在下载的项目中,它是相反的吗?!这是什么原因?一些 lib 文件是静态链接的吗?
非常感谢您的帮助。
【问题讨论】:
标签:
c++
visual-studio
dll
【解决方案1】:
当然有些库没有对应的 dll。如果您将项目类型设置为“静态库”,您的输出将是一个 lib 文件,它只能静态链接到另一个 lib、dll 或 exe。
当您创建 dll 时,会自动创建一个 lib 文件,该文件负责方便地包装 LoadLibrary 和 GetProcAddress 调用。您静态链接到此库,它会为您加载 dll。
【解决方案2】:
没有 dll 的库在编译时静态链接到 exe,而 dll 被编译到它们自己的 dll 文件中。 dll 通常最好允许在不替换 exe 的情况下编译和换出 dll。但是,有些项目只有静态链接的库,这会导致一个更大的 exe 没有 dll。