undefined reference to symbol ‘__glewDeleteBuffers‘ error adding symbols: DSO missing from command l

undefined reference to symbol ‘__glewDeleteBuffers’
//usr/lib/x86_64-linux-gnu/libGLEW.so.2.0: error adding symbols: DSO missing from command line

在编译涉及OpenGL和GLEW(OpenGL Extension Wrangler Library)的项目时遇到“undefined reference to symbol ‘__glewDeleteBuffers’”错误,这通常意味着链接器没有找到GLEW库。错误信息“DSO missing from command line”进一步指出,编译命令行缺少了必要的动态共享对象(Dynamic Shared Object, DSO)或库。

在CMakeLists.txt文件中解决链接GLEW库和OpenGL库的问题,你需要确保find_package命令用于查找这些库,并且在目标链接库列表中使用target_link_libraries命令添加它们。这里是一个简单的示例,演示如何在CMakeLists.txt文件中配置项目以使用GLEW和OpenGL:
首先,确保你的CMakeLists.txt文件中包含必要的find_package调用来找到GLEW和OpenGL。CMake通常能够自动找到这些库,如果它们已经被正确安装在你的系统上。

cmake_minimum_required(VERSION 3.0)
project(MyOpenGLProject)

# 查找OpenGL库
find_package(OpenGL REQUIRED)

# 查找GLEW库
find_package(GLEW REQUIRED)

# 如果你的项目包含多个源文件,可以使用file(GLOB ...)命令来自动收集所有源文件
# file(GLOB SOURCES "*.cpp")

# 指定一个可执行文件目标
add_executable(${PROJECT_NAME} example.cpp) # 或者 ${SOURCES} 如果你使用了file(GLOB ...)

# 包含GLEW和OpenGL的头文件目录
include_directories(${GLEW_INCLUDE_DIRS} ${OPENGL_INCLUDE_DIR})

# 链接GLEW和OpenGL库
target_link_libraries(${PROJECT_NAME} ${GLEW_LIBRARIES} ${OPENGL_LIBRARIES})

这个CMakeLists.txt文件做了以下几件事情:
使用find_package命令查找系统上的GLEW和OpenGL库。
使用add_executable命令创建一个可执行文件目标,假设你的主源文件名为example.cpp。
使用include_directories命令添加GLEW和OpenGL头文件的包含路径,这样编译器就可以找到这些库的头文件。
使用target_link_libraries命令将GLEW和OpenGL库链接到你的可执行文件目标上。
请注意,如果GLEW或OpenGL库安装在非标准路径下,你可能需要在调用find_package之前设置CMAKE_MODULE_PATH变量或者提供GLEW和OpenGL的路径提示。这通常不必要,除非你的环境配置有特殊之处。
此外,如果你的项目还使用了其他库(例如GLUT,GLFW等),你可以以类似的方式查找并链接这些库。
最后,运行CMake来生成构建系统配置文件(例如Makefile或Visual Studio项目文件),然后使用相应的构建系统工具(例如make或Visual Studio)来编译和链接你的项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值