【问题标题】:How do I find the dependencies on a dll :: GLUT specifically如何找到对 dll :: GLUT 的依赖项
【发布时间】:2011-05-09 04:34:29
【问题描述】:

我已经学习 opengl 大约 4-5 个月了。 我准备停止使用 glut(一个帮助程序库,它混淆了 opengl 编程的许多困难/乏味的方面)

问题是,我觉得我已经删除了对 glut.h 的所有引用,以及 glut 中的所有函数调用,但是当我运行我的应用程序时,它仍在尝试链接到 glut32.dll .

一般是为了以后我和其他人可以学习, 在编译之前或之后,如何判断可执行文件/源代码需要哪些库以及为什么(函数/标头)?

我正在使用 VS2010,但是在一个带有 g++ 的 linux 机器上交叉编译它 在这个特定的实例中,我没有将 dll 列为附加依赖项。但我确实在外部依赖项文件夹中看到了 glut.h...我只是无法删除它

谢谢

【问题讨论】:

    标签: c++ visual-studio dll opengl compiler-construction


    【解决方案1】:

    查看项目的链接器属性。 dll,或者更确切地说,相应的 .lib 应该在“附加依赖项”下列出。

    编辑:

    顺便说一句,包含头文件和链接库(或 dll)是两件不同的事情。您可能在某处包含标题,但未链接到相应的库。在这种情况下,链接器会给你一个错误。另一方面,您可能没有包含标题,并且根本没有使用该库,但您可能仍然链接到它。

    在这种情况下,我们似乎两者都有。如果 glut.h 在外部依赖项文件夹中,那么您必须将它包含在代码中的某个位置。尝试使用 find-in-files 来查找它。或者将其从您的系统中完全删除并尝试编译。

    【讨论】:

    • 如问题所述,未在此处列出。 (属性>链接器>输入>附加依赖项);但我确实在该列表中看到了 %(AdditionalDependencies) - 这让我很困扰......这个变量引用在哪里???
    • 对不起,但在你提到的“外部依赖文件夹”的问题中......无论如何,首先要尝试的是删除 AdditionalDependencies 变量,看看会发生什么。接下来要尝试的是查看属性->CommonProperties->Frameworks and References。顺便说一句,glut32 是您解决方案中的一个项目吗?
    • 感谢您的帮助和回复。我能够找到 .h 被引用的位置......我也在消除对 stdafx.h 的需求,并且在混乱中它正在链接到另一个 .h 的旧版本,这需要...... .glut.h - 失败,感谢你
    • 没问题。我很高兴能帮上忙。
    【解决方案2】:

    如果在 Visual Studio 项目选项中查找 glut.lib 隐藏位置时遇到问题,请在标准文本编辑器中打开 .vcproj 并进行全文搜索。

    【讨论】:

      【解决方案3】:

      Dependency Walker 是您检查已编译二进制文件的 dll 依赖关系的朋友。

      当然,主要问题是您在项目中的某个地方添加了 glut.lib 或 glut32.lib。它可能在项目属性>链接器设置>附加库中,或者某些源文件包含类似这样的#pragma:-

      #pragma comment(lib, "glut32.lib")
      

      【讨论】:

        【解决方案4】:

        每个 exe/dll 都有一个称为导入地址表 (IAT) 的东西,它是存储在 PE(可移植可执行文件:窗口的可执行文件格式)文件头中的信息,关于加载相关模块时加载程序需要加载哪些 dll .您可以使用 PE Viewer 或 PE Explorer 之类的工具来查看此信息或编写自己的信息(这更难)。您将看到静态链接到可执行文件的库。如果您在任何这些文件中都没有看到 glut32.dll,则它可能是通过其他一些 openGL 库中的 LoadLibrary api 动态加载的。我对 openGL 二进制文件不是很熟悉,因此无法为您确认。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多