gpt4 book ai didi

windows - 关于静态库和 dll

转载 作者:可可西里 更新时间:2023-11-01 09:34:27 30 4
gpt4 key购买 nike

根据我的理解,dll 在运行时动态加载,静态库(.lib 文件)在链接期间加载。我也了解到有两种类型的 .lib 文件。一个是静态 .lib 文件,这意味着在链接期间,这些文件将与我编写的代码链接。另一种类型的 .lib 文件只是导入文件,它只是告诉链接器可能位于 system32 或 sysWoW64 文件夹中的 .dll 文件的路径。我的理解正确吗?

现在我对整个 .lib 和 .dll 文件系统是如何工作的几乎没有疑问了。

我已经编译了 freeglut 库,在 lib 文件夹中我有 3 个重要文件。 freeglut.lib、freeglut-static.lib 和 freeglut.dll。我假设 freeglut.lib 是一个导入库,因为它只有 36KB 大小。我还假设 freeglut-static.lib 是一个静态库,大小约为 2MB。

我可以通过将 freeglut.lib 放在 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib 并将 freeglut.dll 放在 sysWoW64 文件夹中来使我的代码工作。这对我有用,我知道这是最有效的方法。

当我尝试使用 freeglut-static.lib 时,它无法编译。我将 freeglut-static.lib 放在 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib(我从这里删除了 freeglut.lib)并在项目属性>链接器>输入中添加了 freeglut-static.lib > 额外的依赖。然而 Visual Studio 一直在说

'LINK : fatal error LNK1104: cannot open file 'freeglut.lib'

为什么会这样?这只是尝试了解图书馆,我可以继续使用第一种方法。有人可以深入了解这个吗?我错过了什么吗?

最佳答案

我认为 header 将尝试以任何一种方式使用 freeglut.lib。您必须指定您喜欢使用静态版本。

#define FREEGLUT_STATIC

(GLUT 也是如此)

这是一篇讨论相同问题的博客文章:http://mattfife.com/?p=226

关于windows - 关于静态库和 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17030847/

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