Я пытаюсь скомпилировать следующий код примера CImg с std = С++ 0x и MingW:
#include "CImg.h"
using namespace cimg_library;
int main() {
CImg<unsigned char> img(640,400,1,3);
img.fill(0);
unsigned char purple[] = { 255,0,255 };
img.draw_text(100,100,"Hello World",purple);
img.display("My first CImg code");
return 0;
}
Когда я компилирую, используя:
g++ -std=c++0x HelloWorld.cpp -lgdi32
Я получаю следующую ошибку:
error: '_fileno' was not declared in this scope
Но когда я компилирую без std = С++ 0x, он отлично работает:
g++ HelloWorld.cpp -lgdi32
Как скомпилировать CImg с включенным С++ 0x?
Я думаю, что gnu++0x
или gnu++11
должен быть доступен под GCC 4.5.x и с этим вы должны скомпилировать CImg
с возможностью использовать С++ 11 (я только что проверил под своей собственной установкой MinGW, однако я использую 4.8. Могли бы вы рассмотреть возможность обновления?). Поэтому вы можете просто использовать:
g++ -o hello_world.exe HelloWorld.cpp -O2 -lgdi32 -std=gnu++0x
Или:
g++ -o hello_world.exe HelloWorld.cpp -O2 -lgdi32 -std=gnu++11
РЕДАКТИРОВАТЬ
Я только что проверил, и -std=gnu++11
доступна с GCC 4.7, но я считаю, что с -std=gnu++0x
под 4.5.x.
to enable GNU extensions in addition to C++0x extensions
, добавьте - std = gnu ++ 0x для вашей командной строки g ++. " Итак, в основном это означает, что это C ++ 11 с некоторыми расширениями GNU. Более подробную информацию можно найти здесь: stackoverflow.com/questions/10613126/…