如果我提出这个问题,请对不起,但我不知道如何解决这个问题。如果不是为了一些hello world项目,我之前从未使用过c ++。我需要在ubuntu上编译ilixi。我已经安装了所有依赖项,并且autogen不会再次抱怨缺少依赖项。
在我运行的那一刻
make
我收到此错误:
Surface.cpp: In member function 'void ilixi::Surface::setGeometry(int, int, int, int)':
Surface.cpp:157:44: error: in C++98 'r' must be initialized by constructor, not by '{...}'
DFBRectangle r = { x, y, width, height };
^
Surface.cpp: In member function 'void ilixi::Surface::flip(const ilixi::Rectangle&)':
Surface.cpp:223:53: error: in C++98 'rect' must be initialized by constructor, not by '{...}'
DFBRectangle rect = { 0, 0, w, r.y1 };
^
Surface.cpp:229:68: error: in C++98 'rect' must be initialized by constructor, not by '{...}'
DFBRectangle rect = { 0, r.y2 + 1, w, h - r.y2 - 1 };
^
Surface.cpp:235:70: error: in C++98 'rect' must be initialized by constructor, not by '{...}'
DFBRectangle rect = { 0, r.y1, r.x1, r.y2 - r.y1 + 1 };
^
Surface.cpp:241:85: error: in C++98 'rect' must be initialized by constructor, not by '{...}'
DFBRectangle rect = { r.x2 + 1, r.y1, w - r.x2 - 1, r.y2 - r.y1 + 1 };
^
我认为这与c ++的某些编译器变体有关,因为我正在尝试编写ilixi的1.0.0版本,并且我认为在发布的库的代码中不能像这样的错误。我会坚持使用C ++ 98并改变它。有人能告诉我我需要使用哪种c ++方言吗?
这是我发现的唯一一个类似于我的错误的参考。我试图改变那种方言的makefile,但没有运气
非常感谢
答案 0 :(得分:0)
尝试将-std=c++11
添加到gcc命令行。代码使用统一初始化,这是一个C ++ 11功能。你需要一个相当新版本的gcc,最新的4.8.x或4.9.x或更新版本。
答案 1 :(得分:0)
您必须使用C ++ 11标准编译您的应用程序。首先,确保至少拥有gcc 4.7。
因此,为了编译代码,您应该使用gcc -Wall **-std=c++11** -o test test.cpp
。
在Makefile中,搜索如下内容:CFLAGS = -Wall -std=c++11
。
答案 2 :(得分:0)
INSTALL文件告诉你:
简单地说,shell命令`./configure;使; make install'应该 配置,构建和安装此软件包。
确保安装了它们,然后尝试运行./configure,这将检查缺少的库。
./ configure
make&& sudo make install
如果您有先决条件,Autogen也应该有效。