我正在努力将我在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的静态版本;至少它不适合我。
答案 0 :(得分:3)
链接器>输入:
opengl32.dll glew32s.lib glfw3.lib
opengl32.dll
错了。在Windows开发中,链接器始终采用.lib
个文件。对于静态库,.lib
包含实际的库二进制文件。在DLL的情况下,相应的.lib
通知链接器使用哪个DLL以及它提供的符号。
这种特殊选择的主要原因是,在Windows开发中,应该可以链接DLL而不需要实际的DLL。
即使在64位系统上,系统库也总是以…32
为后缀。
答案 1 :(得分:-3)
问题在于,在擦除的VS配置设置中,有一些与x86和x64平台设置相关的事情。因此,该项目现在正在尝试构建针对System32中的32位dll的64位链接。
这就是那个。
一个单独的问题是为什么很多答案都提到了理论上与Windows SDK一起出现的opengl32.lib(静态),但我还没有在任何地方看到它。我只是反对动态的。