【问题标题】:Visual Studio 2013 throws an exception in ntdll.dll when using GLEW library使用 GLEW 库时,Visual Studio 2013 在 ntdll.dll 中引发异常
【发布时间】:2015-01-22 21:52:09
【问题描述】:

我正在使用 OpenGL 编写一个跨平台的 3D 引擎。过去我使用带有一些扩展的 OpenGL 1,它在 Windows/Mac/Linux 上运行良好。但现在我决定使用 OpenGL 3.3 版本。切换到 OpenGL 3.3 导致我的应用程序在启动时失败。

问题是当我选择 Win32 构建目标时,VS 使用 C:/Windows/SysWOW64 文件夹中的库,这是 64 位库。当我选择 x64 构建目标时,VS 使用来自 C:/Windows/System32 的库。

我在 Windows 8.1 x64 上使用 Visual Studio 2013。

这是 Visual Studio 的错误,我应该切换到另一个 IDE 来构建 Windows 还是我在 Visual Studio OpenGL 项目配置方面做错了什么?

【问题讨论】:

    标签: c++ opengl visual-studio-2013 glew ntdll


    【解决方案1】:

    问题是当我选择 Win32 构建目标时,VS 使用 C:/Windows/SysWOW64 文件夹中的库,这是 64 位库。

    不。 SysWOW64 包含 32 位库。

    当我选择 x64 构建目标时,VS 使用来自 C:/Windows/System32 的库。

    是的,因为 64 位库位于 System32

    在您问“等等,什么?!什么样的药物让 Windows 开发人员陶醉?”让我告诉你,这有其充分的理由。问题是,许多程序在某处硬编码了 System32 路径。当这些程序被重新编译为 64 位时,这些硬编码路径仍然存在,即使它们是 64 位,它们也在 System32 位置寻找库。这也是 OpenGL 接口 DLL 在 64 位系统上也被命名为 opengl32.dll 的原因。

    在运行 32 位应用程序时,文件系统名称解析会透明地替换要解析到 SysWOW64 目录的路径。


    因此,在您的问题标题中,您询问了 ntdll.dll 中的崩溃。那怎么办?

    【讨论】:

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