我刚刚成功安装了OpenGL,GLFW3和GLEW,使用CMake构建和MinGW来编译各种库,最后(经过多次试验和错误)让我继续学习如何实际使用这些库。< / p>
我遇到的最后一个问题是一个简单的“未定义的引用`_imp__glewInit @ 0'” - 这是我之前见过的很多次(和其他库一样)并让我相信我没有添加“libglew32” .a“到MinGW的库文件夹,或者我可能需要在我的g ++命令中添加”-l glew32“。这些都不是问题。然后我浏览了这个网站以寻找可能的解决方案,其中最有希望的解决方案是我在调用“#include&lt; GL \ glew.h&gt;”之前立即添加“#define GLEW_STATIC”。这没有解决任何问题。
此时我开始尝试随机的东西,我偶然发现的解决方案是使用“libglew32.dll.a”而不是“libglew32.a”。即使这样也没有找到我在System32中放入的glew32.dll,所以我不得不将glew32.dll放在SysWOW64中,或者放在我项目的文件夹中,以便找到它。
这让我有一些关于库和链接如何在C ++ / Windows中工作的问题,因为直到这个速度提升,我认为我已经对这个过程有了不错的理解:
当我在MinGW的库文件夹中有“libglew32.a”并且在编译命令中添加了“-l glew32”时,为什么链接器无法找到glewInit()?这种组合适用于OpenGL,GLUT,GLFW,GLU,GLM等。
为什么链接器无法在System32中找到“glew32.dll”?同样,这适用于我过去使用过的其他动态库。
虽然这不是最紧迫的问题,但我希望能够对C ++编译和编译方式有充分的了解。链接工作,以及如何使用各种类型的库。我觉得更好地了解这种情况会有很大帮助。