我不能 link 在 Windows 中对抗 opengl32
I cant link against opengl32 in Windows
我正在努力将我在 OS X 中制作的应用程序移植到 Windows 10。我正在使用 visual studio 2015 社区版。
要获得项目 运行,我需要 link 对抗 GLFW,并且据我所知 Windows GLEW,因为我的目标是 GL 4.5。
所以我有 glfw 和 glew 库。我也使用 Cygwin,所以我在 usr/local/(bin | lib | include) 中安装了库,以模仿我在 OS X 中用于这些库的文件夹结构。
我遇到的问题是 opengl 库本身。
直到昨天,我才设法让我的项目通过以下 visual studio 设置编译和初始化 glfw window:
项目->属性->:
C++->一般:
其他包含目录:
C:\cygwin64\usr\local\include
链接器->一般:
其他库目录:
C:\cygwin64\usr\local\lib
C:\cygwin64\usr\local\bin
链接器->输入:
opengl32.dll
glew32s.lib
glfw3.lib
首先要注意的是我link反对opengl32.dll,而不是.lib。我在网上看到一堆问题/帖子,指出当您安装 Windows SDK 时,程序 Files/Microsoft SDKs/Windows(x86 或其他)中有一个 opengl32.lib。我不是这种情况。我什至重新安装了 Windows 10 SDK,它没有在任何地方安装任何静态或动态的 opengl 库。
所以我很确定我的 opengl dll 来自 Windows/System32 因为这是整个机器中唯一有任何类型的 opengl 库的地方。
这让我觉得我可能在 linker 的附加库目录部分中也有 C:\Windows\System32
。我说让我思考,因为大约一周前我已经通过很多努力来设置它。从那时起,我就可以很好地发展了。
昨晚我所做的就是将我的工作提交到 git 分支,切换到另一个分支并合并到该分支。合并后,所有 Visual Studio linker/C++ 设置都被擦除。所以我不得不重新创建它们,如上所示。
现在发生的情况是,如果我包含 C:\Windows\System32
并且 opengl32.dll VS 吐出:
LNK1107 invalid or corrupt file: cannot read at 0x2E0 OpenVRTest C:\Windows\System32\opengl32.dll
如果我不包含它,显然 glfw 中的一半内容未解决。
关于如何让它再次工作的任何提示?
这对我来说毫无意义......它工作得很好而且它必须一直工作得很好 [=75=]
另请注意,我不确定为什么人们坚持安装 Windows SDK 会安装静态版本的 gl 库;至少它不适合我。
问题是在被擦除的 VS 配置设置中,有几项与 x86 和 x64 平台设置相关。因此,该项目现在正在尝试针对 System32 中的 32 位 dll 构建 64 位 linking。
就是这样。
一个单独的问题是为什么很多答案都提到理论上 Windows SDK 附带的 opengl32.lib(静态),但我没有在任何地方看到它。我只是link反对动态的
Linker->Input:
opengl32.dll
glew32s.lib
glfw3.lib
那opengl32.dll
是错误的。在 Windows 开发中,linker always 使用 .lib
文件。对于静态库,.lib
包含实际的库二进制文件。在 DLL 的情况下,相应的 .lib
通知 linker 使用哪个 DLL 以及它提供哪些符号。
选择如何完成事情的主要原因是,在 Windows 开发中,可以 link 针对 DLL 而无需实际的 DLL。
即使在 64 位系统上,系统库也始终带有后缀 …32
。
我正在努力将我在 OS X 中制作的应用程序移植到 Windows 10。我正在使用 visual studio 2015 社区版。
要获得项目 运行,我需要 link 对抗 GLFW,并且据我所知 Windows GLEW,因为我的目标是 GL 4.5。
所以我有 glfw 和 glew 库。我也使用 Cygwin,所以我在 usr/local/(bin | lib | include) 中安装了库,以模仿我在 OS X 中用于这些库的文件夹结构。
我遇到的问题是 opengl 库本身。
直到昨天,我才设法让我的项目通过以下 visual studio 设置编译和初始化 glfw window:
项目->属性->:
C++->一般:
其他包含目录:
C:\cygwin64\usr\local\include
链接器->一般:
其他库目录:
C:\cygwin64\usr\local\lib
C:\cygwin64\usr\local\bin
链接器->输入:
opengl32.dll
glew32s.lib
glfw3.lib
首先要注意的是我link反对opengl32.dll,而不是.lib。我在网上看到一堆问题/帖子,指出当您安装 Windows SDK 时,程序 Files/Microsoft SDKs/Windows(x86 或其他)中有一个 opengl32.lib。我不是这种情况。我什至重新安装了 Windows 10 SDK,它没有在任何地方安装任何静态或动态的 opengl 库。
所以我很确定我的 opengl dll 来自 Windows/System32 因为这是整个机器中唯一有任何类型的 opengl 库的地方。
这让我觉得我可能在 linker 的附加库目录部分中也有 C:\Windows\System32
。我说让我思考,因为大约一周前我已经通过很多努力来设置它。从那时起,我就可以很好地发展了。
昨晚我所做的就是将我的工作提交到 git 分支,切换到另一个分支并合并到该分支。合并后,所有 Visual Studio linker/C++ 设置都被擦除。所以我不得不重新创建它们,如上所示。
现在发生的情况是,如果我包含 C:\Windows\System32
并且 opengl32.dll VS 吐出:
LNK1107 invalid or corrupt file: cannot read at 0x2E0 OpenVRTest C:\Windows\System32\opengl32.dll
如果我不包含它,显然 glfw 中的一半内容未解决。
关于如何让它再次工作的任何提示? 这对我来说毫无意义......它工作得很好而且它必须一直工作得很好 [=75=]
另请注意,我不确定为什么人们坚持安装 Windows SDK 会安装静态版本的 gl 库;至少它不适合我。
问题是在被擦除的 VS 配置设置中,有几项与 x86 和 x64 平台设置相关。因此,该项目现在正在尝试针对 System32 中的 32 位 dll 构建 64 位 linking。
就是这样。
一个单独的问题是为什么很多答案都提到理论上 Windows SDK 附带的 opengl32.lib(静态),但我没有在任何地方看到它。我只是link反对动态的
Linker->Input:
opengl32.dll glew32s.lib glfw3.lib
那opengl32.dll
是错误的。在 Windows 开发中,linker always 使用 .lib
文件。对于静态库,.lib
包含实际的库二进制文件。在 DLL 的情况下,相应的 .lib
通知 linker 使用哪个 DLL 以及它提供哪些符号。
选择如何完成事情的主要原因是,在 Windows 开发中,可以 link 针对 DLL 而无需实际的 DLL。
即使在 64 位系统上,系统库也始终带有后缀 …32
。