Я использую cmake для загрузки библиотеки freeimage, и я использую kubuntu 14.x У меня была эта проблема с
"error: conflicting declaration ‘typedef CARD8 BOOL’"
, и я подумал, что было бы хорошо поделиться своим решением с людьми, которые имеют этупроблема!
установить FreeImage в Linux:
sudo apt-get install libfreeimage-dev
В моем файле CMakeLists.txt у меня есть:
set(FREEIMAGE_LIBRARY_AND_HEADER_DIRRECTORY /usr/libs)
find_path(FREEIMAGE_LIBRARY_AND_HEADER_DIRRECTORY, FreeImage.h)
find_library(FREEIMAGE_LIBRARY_AND_HEADER_DIRRECTORY, freeimage)
include_directories(${FREEIMAGE_LIBRARY_AND_HEADER_DIRRECTORY})
target_link_libraries(freeimage)
И в моем main.cpp у меня есть:
#include <FreeImage.h>
#ifndef CARD8
#define BYTE CARD8
#define BOOL CARD8
#endif
И некоторый дополнительный код для захвата кадра OpenGl на диск:
void generateImage(){
int w, h; // get the width and height of the OpenGL window!
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
GLubyte * pixels = new GLubyte[3*w*h];
glReadPixels(0,0,w,h,GL_RGB,GL_UNSIGNED_BYTE, pixels);
FIBITMAP * image = FreeImage_ConvertFromRawBits(pixels,w,h,3 * w, 24, 0x0000FF, 0xFF0000, 0x00FF00, false);
FreeImage_Save(FIF_BMP,image, "../img/text.bmp",0);
//Free resource
FreeImage_Unload(image);
delete[] pixels;
}
Надеюсь, это поможет тем, у кого проблемы с этим!
С уважением, Кахин