0

我正在尝试使用 std=c++0x 和 MingW 编译以下 CImg 示例代码:

#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=c++0x 的情况下编译时,它可以完美运行:

g++ HelloWorld.cpp -lgdi32

如何在启用 c++0x 的情况下编译 CImg?

4

1 回答 1

2

我认为gnu++0x或者gnu++11应该在 GCC 4.5.x 下可用,并且你应该能够CImg使用 C++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 下使用。

于 2014-02-27T22:40:53.783 回答