我无法链接到Windows中的opengl32

问题描述 投票:2回答:2

我正在努力将我在OS X中制作的应用程序移植到Windows 10.我正在使用visual studio 2015 Community Edition。

为了让项目运行,我需要链接GLFW,并且在我理解的Windows中,GLEW,因为我的目标是GL 4.5。

所以我有glfw和glew libs。我也使用Cygwin所以我在usr / local /(bin | lib | include)中安装了libs来模仿我在OS X中为这些库使用的文件夹结构。

我遇到的问题是opengl lib本身。

直到昨天,我已经设法使用以下visual studio设置来编译和初始化glfw窗口:

项目 - >属性 - >:

C ++ - >常规:

其他包含目录:

C:\cygwin64\usr\local\include

链接>常规:

其他图书馆馆藏:

C:\cygwin64\usr\local\lib
C:\cygwin64\usr\local\bin

连接器 - >输入:

opengl32.dll
glew32s.lib
glfw3.lib

首先要注意的是我是在链接opengl32.dll,而不是.lib。我在网上看了很多问题/帖子,说明当你安装Windows SDK时,你在Program Files / Microsoft SDKs / Windows(x86或其他)中有一个opengl32.lib。对我来说情况并非如此。我甚至重新安装了Windows 10 SDK,它不会在任何地方安装任何opengl lib,静态或动态。

所以我很确定我的opengl dll来自Windows / System32,因为这是整个机器中唯一存在任何类型的opengl lib的地方。

这让我觉得我可能在链接器的附加库目录部分中也有C:\Windows\System32。我说让我思考,因为我在一周前做了很多努力。从那时起我就能发展得很好。

昨晚我所做的就是将我的工作提交给git分支,切换到另一个分支并合并到该分支。合并后,擦除所有Visual Studio链接器/ C ++设置。所以我不得不重新创建它们,如上所示。

现在发生的事情是,如果我包括C:\Windows\System32和opengl32.dll VS吐出:

LNK1107 invalid or corrupt file: cannot read at 0x2E0   OpenVRTest  C:\Windows\System32\opengl32.dll

如果我不包括它,显然glfw中的一半东西是未解决的。

关于如何重新开始工作的任何提示?这对我来说没有任何意义......它工作得很好,而且必须使用这个opengl32.dll才能正常工作

另外作为旁注,我不确定为什么人们坚持认为安装Windows SDK会安装gl lib的静态版本;至少它不适合我。

opengl visual-studio-2015 windows-10 glfw glew
2个回答
3
投票

连接器 - >输入:

opengl32.dll
glew32s.lib
glfw3.lib

opengl32.dll错了。在Windows开发中,链接器始终使用.lib文件。在静态库的情况下,.lib包含实际的库二进制文件。在DLL的情况下,相应的.lib通知链接器使用哪个DLL以及它提供哪些符号。

这种特殊选择的主要原因是,在Windows开发中,应该可以链接到DLL而不需要实际的DLL。

即使在64位系统上,系统库也总是以…32为后缀。


-3
投票

问题是,在擦除的VS配置设置中,有一些与x86和x64平台设置相关的事情。因此,该项目现在正在尝试构建针对System32中的32位dll的64位链接。

就是这样。

一个单独的问题是为什么很多答案都提到了一个理论上与Windows SDK一起出现的opengl32.lib(静态),但我还没有看到它。我只是反对动态的。

© www.soinside.com 2019 - 2024. All rights reserved.