You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake+Visual Studio 2017调试模式下找不到glew32d.dll问题求助

解决Visual Studio 2017中找不到glew32d.dll的问题(通过CMake编译链接GLEW和GLFW)

我来帮你搞定这个调试时找不到glew32d.dll的麻烦——咱们通过CMake从源码编译GLEW和GLFW,再把它们和你的项目绑定链接,彻底解决DLL缺失的问题。跟着下面的步骤一步步来:

1. 规整项目文件夹结构(可选但更清晰)

先把GLEW也放到依赖目录里,让整个项目结构更统一,方便CMake管理:

root_project
├── CMakeLists.txt
├── Project 1
│   ├── .h和.cpp文件
│   └── CMakeLists.txt
├── Dependencies
│   ├── glfw
│   │   ├── include
│   │   ├── src
│   │   └── ...
│   └── glew
│       ├── include
│       ├── src
│       └── ...

如果还没下载GLEW源码,直接去官网下源码包解压到Dependencies/glew目录就行。

2. 配置根目录的CMakeLists.txt

打开根目录的CMakeLists.txt,替换成下面的内容,每一步都加了注释方便理解:

cmake_minimum_required(VERSION 3.10)
project(MyRootProject)

# 设定C++标准,可根据你的项目需求调整版本
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 添加GLFW子目录,CMake会自动处理GLFW的编译
add_subdirectory(Dependencies/glfw)

# 添加GLEW子目录——部分GLEW版本自带CMakeLists,没有的话看下一步补配置
add_subdirectory(Dependencies/glew)

# 最后添加你的项目1
add_subdirectory(Project 1)

给无CMakeLists的GLEW补配置

如果下载的GLEW源码里没有CMakeLists.txt,就在Dependencies/glew目录下新建一个,内容如下:

project(glew)

# 收集GLEW的核心源文件
file(GLOB GLEW_SOURCES src/glew.c)

# 推荐编译成静态库,直接嵌入到你的程序里,彻底避免DLL缺失问题
add_library(glew STATIC ${GLEW_SOURCES})

# 让其他项目能找到GLEW的头文件
target_include_directories(glew PUBLIC include)

# 链接OpenGL库,这是GLEW的必备依赖
find_package(OpenGL REQUIRED)
target_link_libraries(glew PUBLIC OpenGL::GL)

# 定义GLEW编译需要的宏,调试模式下开启调试标记
target_compile_definitions(glew PRIVATE GLEW_BUILD)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
    target_compile_definitions(glew PRIVATE GLEW_DEBUG)
endif()

3. 配置Project 1的CMakeLists.txt

打开Project 1里的CMakeLists.txt,改成下面的内容:

project(Project1)

# 收集你项目里的所有源文件和头文件
file(GLOB PROJECT_SOURCES *.cpp *.h)

# 生成可执行文件
add_executable(Project1 ${PROJECT_SOURCES})

# 把GLFW和GLEW链接到你的项目上
target_link_libraries(Project1 PRIVATE glfw glew)

# 显式指定依赖头文件目录(其实通过上面的链接已自动包含,写出来更清晰)
target_include_directories(Project1 PRIVATE 
    ${CMAKE_SOURCE_DIR}/Dependencies/glfw/include
    ${CMAKE_SOURCE_DIR}/Dependencies/glew/include
)

# 如果非要用动态库版本的GLEW,就取消下面注释,编译后自动把调试版DLL复制到输出目录
# if(CMAKE_BUILD_TYPE STREQUAL "Debug")
#     add_custom_command(TARGET Project1 POST_BUILD
#         COMMAND ${CMAKE_COMMAND} -E copy_if_different
#         $<TARGET_FILE:glew>
#         $<TARGET_FILE_DIR:Project1>
#     )
# endif()

4. 编译并验证

完成配置后,按照下面的步骤操作:

  • 打开CMake-GUI,选择root_project作为源代码目录,新建一个build目录作为编译输出目录
  • 点击Configure,选择Visual Studio 2017对应的版本(比如Visual Studio 15 2017 Win64)
  • 点击Generate,生成Visual Studio解决方案
  • 打开生成的MyRootProject.sln,切换到Debug模式,编译整个解决方案
  • 运行你的Project1,这下应该不会再弹出找不到glew32d.dll的提示了!

为什么这样能解决问题?

咱们从源码编译GLEW的调试版本,要么把它编译成静态库直接嵌入到程序里,要么动态编译后自动把glew32d.dll复制到可执行文件的输出目录,这样Visual Studio调试时就能精准找到对应的DLL了。

内容的提问来源于stack exchange,提问作者ShadowDragon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:54:07