[OPENGL] [GLFW] [windows] can not find some openGL functions


#1

My cmake file is like this:

find_package(OpenGL QUIET)

if(OpenGL_FOUND)
  # always set the includedir when dir is available
  # avoid global retrigger of cmake
  include_directories(${OPENGL_INCLUDE_DIRS})
endif(OpenGL_FOUND)

if(USE_OPENGL)
  find_package(OpenGL REQUIRED)
  # find_package(glfw3 QUIET REQUIRED PATHS "F:/CODE/glfw-3.2.1/build")
  include_directories("F:/CODE/InferenceFramework/glfw-3.2.1.bin.WIN64/include")
  set(glfw3 "F:/CODE/InferenceFramework/glfw-3.2.1.bin.WIN64/lib-vc2015")
  message(STATUS "Build with OpenGL support")
  file(GLOB RUNTIME_OPENGL_SRCS src/runtime/opengl/*.cc)
  list(APPEND TVM_RUNTIME_LINKER_LIBS ${OpenGL_LIBRARIES} glfw3)
  list(APPEND RUNTIME_SRCS ${RUNTIME_OPENGL_SRCS})
else(USE_OPENGL)
  list(APPEND COMPILER_SRCS src/codegen/opt/build_opengl_off.cc)
endif(USE_OPENGL)

I get errors :

2>f:\code\tvm\src\runtime\opengl\opengl_common.h(101): error C2061: 语法错误: 标识符“GLsizeiptr” (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(123): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(123): error C2143: 语法错误: 缺少“,”(在“*”的前面) (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(127): error C2061: 语法错误: 标识符“GLchar” (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(130): error C2061: 语法错误: 标识符“GLchar” (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(133): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(133): error C2143: 语法错误: 缺少“,”(在“*”的前面) (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(137): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(137): error C2143: 语法错误: 缺少“,”(在“*”的前面) (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(101): error C2061: 语法错误: 标识符“GLsizeiptr” (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_module.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(123): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_module.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(123): error C2143: 语法错误: 缺少“,”(在“*”的前面) (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_module.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(127): error C2061: 语法错误: 标识符“GLchar” (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_module.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(130): error C2061: 语法错误: 标识符“GLchar” (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_module.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(133): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_module.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(133): error C2143: 语法错误: 缺少“,”(在“*”的前面) (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_module.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(137): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_module.cc)
2>f:\code\tvm\src\runtime\opengl\opengl_common.h(137): error C2143: 语法错误: 缺少“,”(在“*”的前面) (编译源文件 F:\CODE\tvm\src\runtime\opengl\opengl_module.cc)
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(196): error C2065: “GL_ARRAY_BUFFER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(198): error C2065: “GL_ARRAY_BUFFER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(198): error C2065: “GL_STATIC_DRAW”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(203): error C2065: “GL_ARRAY_BUFFER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(206): error C2065: “GL_VERTEX_SHADER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(220): error C2065: “GL_TEXTURE0”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(234): error C2065: “GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(259): error C2065: “GL_FRAGMENT_SHADER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(274): error C2197: “void (__cdecl *)(GLuint,GLsizei,const int)”: 用于调用的参数太多
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(279): error C2065: “GL_COMPILE_STATUS”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(282): error C2065: “GL_INFO_LOG_LENGTH”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(286): error C2197: “void (__cdecl *)(GLuint,GLsizei,GLsizei *)”: 用于调用的参数太多
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(303): error C2065: “GL_R8I”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(303): error C2065: “GL_RED_INTEGER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(305): error C2065: “GL_R16I”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(305): error C2065: “GL_RED_INTEGER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(307): error C2065: “GL_R32I”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(307): error C2065: “GL_RED_INTEGER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(315): error C2065: “GL_R8UI”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(315): error C2065: “GL_RED_INTEGER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(317): error C2065: “GL_R16UI”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(317): error C2065: “GL_RED_INTEGER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(319): error C2065: “GL_R32UI”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(319): error C2065: “GL_RED_INTEGER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(327): error C2065: “GL_R32F”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(336): error C2065: “GL_R32F”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(358): error C2065: “GL_CLAMP_TO_EDGE”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(360): error C2065: “GL_CLAMP_TO_EDGE”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(378): error C2065: “GL_LINK_STATUS”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(381): error C2065: “GL_INFO_LOG_LENGTH”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(385): error C2197: “void (__cdecl *)(GLuint,GLsizei,GLsizei *)”: 用于调用的参数太多
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(395): error C2664: “GLint (GLuint,const int)”: 无法将参数 2 从“const char [6]”转换为“const int”
2>  F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(395): note: 没有使该转换得以执行的上下文
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(396): error C3536: “point_attrib”: 初始化之前无法使用
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(478): error C2065: “GL_FRAMEBUFFER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(482): error C2065: “GL_FRAMEBUFFER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(482): error C2065: “GL_COLOR_ATTACHMENT0”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(485): error C2065: “GL_FRAMEBUFFER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(485): error C2065: “GL_FRAMEBUFFER_COMPLETE”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(541): error C2664: “GLint (GLuint,const int)”: 无法将参数 2 从“const char *”转换为“const int”
2>  F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(541): note: 没有使该转换得以执行的上下文
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(575): error C2664: “GLint (GLuint,const int)”: 无法将参数 2 从“const char *”转换为“const int”
2>  F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(575): note: 没有使该转换得以执行的上下文
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(583): error C2065: “GL_FRAMEBUFFER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(587): error C2065: “GL_FRAMEBUFFER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(587): error C2065: “GL_COLOR_ATTACHMENT0”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(590): error C2065: “GL_COLOR_ATTACHMENT0”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(594): error C2065: “GL_FRAMEBUFFER”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_device_api.cc(594): error C2065: “GL_FRAMEBUFFER_COMPLETE”: 未声明的标识符
2>F:\CODE\tvm\src\runtime\opengl\opengl_module.cc(223): warning C4267: “初始化”: 从“size_t”转换到“GLint”,可能丢失数据

it is very strange that some gl function can not been recongnized while GLint or GLsizei and so on is ok. How can I fix this? Is it a bug on windows? Or need to add glew? Thank you for reading.