如何解决使用Visual C ++在VS Code中设置GLEW和GLFW
我在Visual Studio Code中有一个基本的Visual C ++环境。我最近开始阅读有关OpenGL的文章,并一直试图在VS Code中设置GLEW和GLFW。我发现几乎所有的教程都属于以下两类之一:
- 使用MSVC进行的GLEW和GLFW设置,但在Visual Studio中
- 在VS Code中设置了GREW和GLFW,但具有minGW。
我已经阅读了几次有关MSVC命令行及其选项的文档,无法弄清。我对Cmake并不熟悉,所以我一直试图通过VS Code tasks.json 文件来实现。
我的 tasks.json 文件如下:
{
"version": "2.0.0","tasks": [
// BUILD TASK
{
"type": "shell","label": "C/C++: build project","command": "cl.exe","args": [
// exception handling args
"/EHsc",// including additional headers
"/I${workspaceFolder}\\include\\glew\\include","/I${workspaceFolder}\\include\\glfw\\include",// obj files path
"/Fo${workspaceFolder}\\bin\\",// exe file path
"/Fe:","${workspaceFolder}\\bin\\program.exe",// source files
"${workspaceFolder}\\src\\*.cpp",// library files
"opengl32.lib","${workspaceFolder}\\include\\glew\\lib\\Release\\x64\\glew32s.lib","${workspaceFolder}\\include\\glfw\\lib-vc2019\\glfw3.lib"
],"options": {
"cwd": "${workspaceFolder}"
},"problemMatcher": [
"$msCompile"
],"group": {
"kind": "build","isDefault": true
}
},// CLEAN TASK
{
"type": "shell","label": "C/C++: clean project","command": "del","args": [
"${workspaceFolder}\\bin\\*",],"options": {
"cwd": "${workspaceFolder}"
}
}
]
}
我的 main.cpp 文件中有几行代码可以打开一个窗口。
#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
using namespace std;
int main()
{
if (!glfwInit())
{
cout << "Failed to initialize GLFW" << endl;
return -1;
}
glfwWindowHint(GLFW_SAMPLES,4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* window;
window = glfwCreateWindow(1000,700,"Test window 01",NULL,NULL);
if (window == NULL)
{
cout << "Failed to open GLFW window" << endl;
return -1;
}
glfwMakeContextCurrent(window);
glewExperimental = true;
if(glewInit() != GLEW_OK)
{
cout << "Failed to initialize GLEW" << endl;
return -1;
}
}
在此pastebin上运行构建任务时,完整的终端输出
解决方法
我最近有一个类似的问题,并且通过使用dll而不是静态链接来解决了该问题
为此,您将添加glfw3dll.lib
而不是glfw3.lib
(您应该在从glfw网站下载的同一个zip文件中,并在dll旁边)并将dll放置在可执行文件附近
您还应该在包含其他glfw标头之前定义GLFW_DLL
,如documentation所述
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。