Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

linking to glew in c

I can't link properly to glew.

I have done:

#define GLEW_STATIC
#include "glew/glew.h"
#pragma comment(lib, "glew/glew32s.lib")

However, I still get the error:

LNK2019: unresolved external symbol __glewGenBuffersARB referenced in function initialize

like image 289
LunchMarble Avatar asked Jun 14 '12 05:06

LunchMarble


2 Answers

Save yourself a lot of trouble and just put the glew.c file into your project. I never bother with linking to a glew library externally. Once you have that in there, the GLEW_STATIC macro will work. It's only one file, and (if this matters to you) it will carry nicely across platforms (rather than having to rebuild several OS-specific libs).

like image 162
TheBuzzSaw Avatar answered Sep 24 '22 02:09

TheBuzzSaw


I want to extend the excellent @TheBuzzSaw's idea by providing a more detailed answer for a cmake project.

  1. Download GLEW sources from here.
  2. Unzip the archive and copy two files (src/glew.c and include/GL/glew.h) into your project's directory.
  3. Edit glew.c so that the beginning of the file looks like this:
#ifndef GLEW_INCLUDE
#include "glew.h"  /* Point to local glew.h file. */
#else
#include GLEW_INCLUDE
#endif
  1. Use the following in your main.cpp file to include static GLEW correctly:
#define GLEW_STATIC
#include "glew.h"
  1. To build the project, you must compile and link the static GLEW library. Sample CMakeLists.txt file with the use of copied files:
cmake_minimum_required(VERSION 3.17)
project(your-project-name)

add_library(STATIC_GLEW glew.c)
add_executable(your-project-name main.cpp)


target_link_libraries(your-project-name STATIC_GLEW)

Now, you should be able to build your project without any linking errors ๐ŸŽ‰

like image 36
bmiselis Avatar answered Sep 26 '22 02:09

bmiselis