Related
I am trying to use onnx in c++ code. But when I try to use onnx/proto_utils.h I am getting
error: 'AttributeProto' does not a name type. I am not sure is it some issue with my installation
or what. I installed onnx from source, using readme.md installation instructions. If anybody
has any clue what is wrong I would appraciate any help.
Onnx installation steps:
git clone https://github.com/onnx/onnx.git
cd onnx
git submodule update --init --recursive
python3 setup.py install
sudo apt-get install protobuf-compiler libprotoc-dev
pip3 install onnx
test.cpp
#include <iostream>
#include "onnx/onnx_pb.h"
#include "onnx/proto_utils.h"
int main()
{
std::cout << "Hello\n";
}
Compilation
g++ -DONNX_ML=1 test.cpp -o test -lprotobuf -I/home/bearnard/onnx/.setuptools-cmake-build/
Error Message
In file included from test.cpp:3:
/usr/local/include/onnx/proto_utils.h:38:65: error: ‘AttributeProto’ does not name a type
38 | template<typename T> inline std::vector<T> RetrieveValues(const AttributeProto& attr);
| ^~~~~~~~~~~~~~
/usr/local/include/onnx/proto_utils.h:39:61: error: ‘AttributeProto’ does not name a type
39 | template<> inline std::vector<int64_t> RetrieveValues(const AttributeProto& attr) {
| ^~~~~~~~~~~~~~
/usr/local/include/onnx/proto_utils.h: In function ‘std::vector<T> ONNX_NAMESPACE::RetrieveValues(const int&) [with T = long int]’:
/usr/local/include/onnx/proto_utils.h:40:16: error: request for member ‘ints’ in ‘attr’, which is of non-class type ‘const int’
40 | return {attr.ints().begin(), attr.ints().end()};
| ^~~~
/usr/local/include/onnx/proto_utils.h:40:37: error: request for member ‘ints’ in ‘attr’, which is of non-class type ‘const int’
40 | return {attr.ints().begin(), attr.ints().end()};
| ^~~~
/usr/local/include/onnx/proto_utils.h:40:49: error: could not convert ‘{<expression error>, <expression error>}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<long int>’
40 | return {attr.ints().begin(), attr.ints().end()};
| ^
| |
| <brace-enclosed initializer list>
/usr/local/include/onnx/proto_utils.h: At global scope:
/usr/local/include/onnx/proto_utils.h:43:65: error: ‘AttributeProto’ does not name a type
43 | template<> inline std::vector<std::string> RetrieveValues(const AttributeProto& attr) {
| ^~~~~~~~~~~~~~
/usr/local/include/onnx/proto_utils.h: In function ‘std::vector<T> ONNX_NAMESPACE::RetrieveValues(const int&) [with T = std::__cxx11::basic_string<char>]’:
/usr/local/include/onnx/proto_utils.h:44:17: error: request for member ‘strings’ in ‘attr’, which is of non-class type ‘const int’
44 | return { attr.strings().begin(), attr.strings().end() };
| ^~~~~~~
/usr/local/include/onnx/proto_utils.h:44:41: error: request for member ‘strings’ in ‘attr’, which is of non-class type ‘const int’
44 | return { attr.strings().begin(), attr.strings().end() };
| ^~~~~~~
/usr/local/include/onnx/proto_utils.h:44:57: error: could not convert ‘{<expression error>, <expression error>}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<std::__cxx11::basic_string<char> >’
44 | return { attr.strings().begin(), attr.strings().end() };
| ^
| |
| <brace-enclosed initializer list>
/usr/local/include/onnx/proto_utils.h: At global scope:
/usr/local/include/onnx/proto_utils.h:47:59: error: ‘AttributeProto’ does not name a type
47 | template<> inline std::vector<float> RetrieveValues(const AttributeProto& attr) {
| ^~~~~~~~~~~~~~
/usr/local/include/onnx/proto_utils.h: In function ‘std::vector<T> ONNX_NAMESPACE::RetrieveValues(const int&) [with T = float]’:
/usr/local/include/onnx/proto_utils.h:48:17: error: request for member ‘floats’ in ‘attr’, which is of non-class type ‘const int’
48 | return { attr.floats().begin(), attr.floats().end() };
| ^~~~~~
/usr/local/include/onnx/proto_utils.h:48:40: error: request for member ‘floats’ in ‘attr’, which is of non-class type ‘const int’
48 | return { attr.floats().begin(), attr.floats().end() };
| ^~~~~~
/usr/local/include/onnx/proto_utils.h:48:55: error: could not convert ‘{<expression error>, <expression error>}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<float>’
48 | return { attr.floats().begin(), attr.floats().end() };
| ^
| |
| <brace-enclosed initializer list>
I recently installed OpenCV on my Ubuntu system. I used instructions from here and here to install OpenCV c++.
When I include the opencv header in my file:
#include <opencv2/opencv.hpp>
It gives me the following error while building:
note: ‘cv::Range’ declared here
589 | class CV_EXPORTS Range
| ^~~~~
In file included from /usr/local/include/opencv4/opencv2/core.hpp:59,
from /usr/local/include/opencv4/opencv2/core/core.hpp:48,
from /home/mo/CLionProjects/DisjointForest/main.cpp:4:
/usr/local/include/opencv4/opencv2/core/mat.hpp:1640:43: error: template argument 1 is invalid
1640 | Mat operator()(const std::vector<Range>& ranges) const;
| ^
/usr/local/include/opencv4/opencv2/core/mat.hpp:1640:43: error: template argument 2 is invalid
/usr/local/include/opencv4/opencv2/core/mat.hpp:1640:9: error: ‘Mat Mat::operator()(const int&) const’ cannot be overloaded with ‘Mat Mat::operator()(const int&) const’
1640 | Mat operator()(const std::vector<Range>& ranges) const;
| ^~~~~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:1630:9: note: previous declaration ‘Mat Mat::operator()(const int&) const’
1630 | Mat operator()( const Rect& roi ) const;
| ^~~~~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:1643:44: error: expected type-specifier
1643 | template<typename _Tp, int n> operator Vec<_Tp, n>() const;
| ^~~~~~~~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:1644:51: error: expected type-specifier
1644 | template<typename _Tp, int m, int n> operator Matx<_Tp, m, n>() const;
| ^~~~~~~~~~~~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:1850:38: error: ‘Vec’ does not name a type
1850 | template<int n> uchar* ptr(const Vec<int, n>& idx);
| ^~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:1850:41: error: expected ‘,’ or ‘...’ before ‘<’ token
1850 | template<int n> uchar* ptr(const Vec<int, n>& idx);
| ^
/usr/local/include/opencv4/opencv2/core/mat.hpp:1852:44: error: ‘Vec’ does not name a type
1852 | template<int n> const uchar* ptr(const Vec<int, n>& idx) const;
| ^~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:1852:47: error: expected ‘,’ or ‘...’ before ‘<’ token
1852 | template<int n> const uchar* ptr(const Vec<int, n>& idx) const;
| ^
/usr/local/include/opencv4/opencv2/core/mat.hpp:1877:50: error: ‘Vec’ does not name a type
1877 | template<typename _Tp, int n> _Tp* ptr(const Vec<int, n>& idx);
| ^~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:1877:53: error: expected ‘,’ or ‘...’ before ‘<’ token
1877 | template<typename _Tp, int n> _Tp* ptr(const Vec<int, n>& idx);
| ^
/usr/local/include/opencv4/opencv2/core/mat.hpp:1879:56: error: ‘Vec’ does not name a type
1879 | template<typename _Tp, int n> const _Tp* ptr(const Vec<int, n>& idx) const;
| ^~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:1879:59: error: expected ‘,’ or ‘...’ before ‘<’ token
1879 | template<typename _Tp, int n> const _Tp* ptr(const Vec<int, n>& idx) const;
| ^
/usr/local/include/opencv4/opencv2/core/mat.hpp:1950:49: error: ‘Vec’ does not name a type
1950 | template<typename _Tp, int n> _Tp& at(const Vec<int, n>& idx);
| ^~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:1950:52: error: expected ‘,’ or ‘...’ before ‘<’ token
1950 | template<typename _Tp, int n> _Tp& at(const Vec<int, n>& idx);
| ^
/usr/local/include/opencv4/opencv2/core/mat.hpp:1952:55: error: ‘Vec’ does not name a type
1952 | template<typename _Tp, int n> const _Tp& at(const Vec<int, n>& idx) const;
| ^~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:1952:58: error: expected ‘,’ or ‘...’ before ‘<’ token
1952 | template<typename _Tp, int n> const _Tp& at(const Vec<int, n>& idx) const;
| ^
/usr/local/include/opencv4/opencv2/core/mat.hpp:1958:36: error: ‘Point’ was not declared in this scope; did you mean ‘cv::Point’?
1958 | template<typename _Tp> _Tp& at(Point pt);
| ^~~~~
| cv::Point
In file included from /usr/local/include/opencv4/opencv2/core.hpp:58,
from /usr/local/include/opencv4/opencv2/core/core.hpp:48,
from /home/mo/CLionProjects/DisjointForest/main.cpp:4:
/usr/local/include/opencv4/opencv2/core/types.hpp:194:17: note: ‘cv::Point’ declared here
194 | typedef Point2i Point;
| ^~~~~
In file included from /usr/local/include/opencv4/opencv2/core.hpp:59,
from /usr/local/include/opencv4/opencv2/core/core.hpp:48,
from /home/mo/CLionProjects/DisjointForest/main.cpp:4:
/usr/local/include/opencv4/opencv2/core/mat.hpp:1958:45: error: data member ‘at’ cannot be a member template
1958 | template<typename _Tp> _Tp& at(Point pt);
| ^
/usr/local/include/opencv4/opencv2/core/mat.hpp:1963:42: error: ‘Point’ was not declared in this scope; did you mean ‘cv::Point’?
1963 | template<typename _Tp> const _Tp& at(Point pt) const;
| ^~~~~
| cv::Point
In file included from /usr/local/include/opencv4/opencv2/core.hpp:58,
from /usr/local/include/opencv4/opencv2/core/core.hpp:48,
from /home/mo/CLionProjects/DisjointForest/main.cpp:4:
/usr/local/include/opencv4/opencv2/core/types.hpp:194:17: note: ‘cv::Point’ declared here
194 | typedef Point2i Point;
| ^~~~~
In file included from /usr/local/include/opencv4/opencv2/core.hpp:59,
from /usr/local/include/opencv4/opencv2/core/core.hpp:48,
from /home/mo/CLionProjects/DisjointForest/main.cpp:4:
/usr/local/include/opencv4/opencv2/core/mat.hpp:1963:51: error: expected ‘;’ before ‘const’
1963 | template<typename _Tp> const _Tp& at(Point pt) const;
| ^~~~~~
| ;
/usr/local/include/opencv4/opencv2/core/mat.hpp:1963:57: error: data member ‘at’ cannot be a member template
1963 | template<typename _Tp> const _Tp& at(Point pt) const;
| ^
/usr/local/include/opencv4/opencv2/core/mat.hpp:2001:28: error: ‘MatIterator_’ does not name a type
2001 | template<typename _Tp> MatIterator_<_Tp> begin();
| ^~~~~~~~~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:2002:28: error: ‘MatConstIterator_’ does not name a type
2002 | template<typename _Tp> MatConstIterator_<_Tp> begin() const;
| ^~~~~~~~~~~~~~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:2009:28: error: ‘MatIterator_’ does not name a type
2009 | template<typename _Tp> MatIterator_<_Tp> end();
| ^~~~~~~~~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:2010:28: error: ‘MatConstIterator_’ does not name a type
2010 | template<typename _Tp> MatConstIterator_<_Tp> end() const;
| ^~~~~~~~~~~~~~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:957:68: error: ‘Range’ has not been declared
957 | Mat(const Mat& m, const Range& rowRange, const Range& colRange=Range::all());
| ^~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:2181:22: error: expected nested-name-specifier before ‘DataType’
2181 | typedef typename DataType<_Tp>::channel_type channel_type;
| ^~~~~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:2181:22: error: expected ‘;’ at end of member declaration
2181 | typedef typename DataType<_Tp>::channel_type channel_type;
| ^~~~~~~~
| ;
/usr/local/include/opencv4/opencv2/core/mat.hpp:2181:30: error: expected unqualified-id before ‘<’ token
2181 | typedef typename DataType<_Tp>::channel_type channel_type;
| ^
/usr/local/include/opencv4/opencv2/core/mat.hpp:2182:13: error: ‘MatIterator_’ does not name a type
2182 | typedef MatIterator_<_Tp> iterator;
| ^~~~~~~~~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:2183:13: error: ‘MatConstIterator_’ does not name a type
2183 | typedef MatConstIterator_<_Tp> const_iterator;
| ^~~~~~~~~~~~~~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:2192:23: error: expected ‘)’ before ‘_size’
2192 | explicit Mat_(Size _size);
| ~ ^~~~~~
| )
/usr/local/include/opencv4/opencv2/core/mat.hpp:2194:14: error: expected ‘)’ before ‘_size’
2194 | Mat_(Size _size, const _Tp& value);
| ~ ^~~~~~
| )
/usr/local/include/opencv4/opencv2/core/mat.hpp:2208:31: error: ‘Range’ does not name a type
2208 | Mat_(const Mat_& m, const Range& rowRange, const Range& colRange=Range::all());
| ^~~~~
/usr/local/include/opencv4/opencv2/core/mat.hpp:2208:54: error: ‘Range’ does not name a type
2208 | Mat_(const Mat_& m, const Range& rowRange, const Range& colRange=Range::all());
| ^~~~~
.....................
.....................
In file included from /usr/local/include/opencv4/opencv2/core.hpp:3294,
from /usr/local/include/opencv4/opencv2/core/core.hpp:48,
from /home/mo/CLionProjects/DisjointForest/main.cpp:4:
/usr/local/include/opencv4/opencv2/core/optim.hpp:296:26: error: ‘InputArray’ was not declared in this scope; did you mean ‘OutputArray’?
296 | CV_EXPORTS_W int solveLP(InputArray Func, InputArray Constr, OutputArray z);
| ^~~~~~~~~~
| OutputArray
/usr/local/include/opencv4/opencv2/core/optim.hpp:296:43: error: ‘InputArray’ was not declared in this scope; did you mean ‘OutputArray’?
296 | CV_EXPORTS_W int solveLP(InputArray Func, InputArray Constr, OutputArray z);
| ^~~~~~~~~~
| OutputArray
/usr/local/include/opencv4/opencv2/core/optim.hpp:296:74: error: expected primary-expression before ‘z’
296 | CV_EXPORTS_W int solveLP(InputArray Func, InputArray Constr, OutputArray z);
| ^
/usr/local/include/opencv4/opencv2/core/optim.hpp:296:75: error: expression list treated as compound expression in initializer [-fpermissive]
296 | CV_EXPORTS_W int solveLP(InputArray Func, InputArray Constr, OutputArray z);
| ^
make[3]: *** [CMakeFiles/DisjointForest.dir/build.make:63: CMakeFiles/DisjointForest.dir/main.cpp.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:76: CMakeFiles/DisjointForest.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/DisjointForest.dir/rule] Error 2
make: *** [Makefile:118: DisjointForest] Error 2
I have no idea what this error means. Could someone please guide me how I can fix this error and starting working with openCV?
If it helps, here's my cmake file:
cmake_minimum_required(VERSION 3.16)
project(DisjointForest)
set(CMAKE_CXX_STANDARD 20)
find_package(OpenCV 4.3.0 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(DisjointForest main.cpp LinkedListDisjointSet.cpp DisjointForest.cpp DisjointForest.h)
target_link_directories(DisjointForest PUBLIC ${OpenCV_LIBS})
Okay so after a lot of research about linkers and linking libraries, I've realized the two problems:
1) Changing c++ 20 to c++ 17 compiled the header files. Perhaps the library is not compatible with c++20 yet.
2) Changing the above won't suffice as we have still not correctly linked the libraries. It will still give unresolved error. In my cmake file I need to replace the target_link_directories() with target_link_libraries(). This was a silly mistake I made while following the instructions from the links in the question.
I would like to use the intersect_segments method of the Boost segment utils, which can be found here: http://www.boost.org/doc/libs/1_59_0/libs/polygon/doc/gtl_segment_concept.htm
I also have followed and implemented the code that maps the Point and Segment structs to the Boost.Polygon concepts: http://www.boost.org/doc/libs/1_59_0/libs/polygon/doc/voronoi_basic_tutorial.htm
However, when I include <boost/polygon/segment_utils.hpp> I get many errors during compiling:
In file included from /usr/include/boost/polygon/segment_utils.hpp:16:0,
from test.cpp:17:
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:17:49: error: expected template-name before '<' token
class line_intersection : public scanline_base<Unit> {
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:17:49: error: expected '{' before '<' token
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:17:49: error: expected unqualified-id before '<' token
In file included from /usr/include/boost/polygon/segment_utils.hpp:16:0,
from test.cpp:17:
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:947:40: error: expected template-name before '<' token
class scanline : public scanline_base<Unit> {
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:947:40: error: expected '{' before '<' token
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:947:40: error: expected unqualified-id before '<' token
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1472:22: error: expected nested-name-specifier before 'scanline_base'
typedef typename scanline_base<Unit>::half_edge half_edge;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1472:22: error: expected ';' at end of member declaration
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1472:35: error: expected unqualified-id before '<' token
typedef typename scanline_base<Unit>::half_edge half_edge;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1475:48: error: 'half_edge' does not name a type
void operator()(result_type& result, const half_edge& edge, const key_type& left, const key_type& right) {
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp: In member function 'void boost::polygon::merge_output_functor<Unit>::operator()(result_type&, const int&, const key_type&, const key_type&)':
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1476:26: error: 'half_edge' was not declared in this scope
typename std::pair<half_edge, int> elem;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1476:40: error: template argument 1 is invalid
typename std::pair<half_edge, int> elem;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1476:42: error: 'elem' in namespace 'std' does not name a type
typename std::pair<half_edge, int> elem;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1477:7: error: 'elem' was not declared in this scope
elem.first = edge;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1479:15: error: request for member 'second' in 'edge', which is of non-class type 'const int'
if(edge.second < edge.first) elem.second *= -1;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1479:29: error: request for member 'first' in 'edge', which is of non-class type 'const int'
if(edge.second < edge.first) elem.second *= -1;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1480:10: error: 'boost::polygon::merge_output_functor<Unit>::scanline_base {aka int}' is not a template
if(scanline_base<Unit>::is_vertical(edge)) elem.second *= -1;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1480:10: error: 'scanline_base' is not a class, namespace, or enumeration
/usr/include/boost/polygon/detail/scan_arbitrary.hpp: At global scope:
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1491:46: error: expected template-name before '<' token
class property_merge : public scanline_base<Unit> {
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1491:46: error: expected '{' before '<' token
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:1491:46: error: expected unqualified-id before '<' token
In file included from /usr/include/boost/polygon/segment_utils.hpp:16:0,
from test.cpp:17:
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2490:52: error: expected template-name before '<' token
class arbitrary_boolean_op : public scanline_base<Unit> {
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2490:52: error: expected '{' before '<' token
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2490:52: error: expected unqualified-id before '<' token
/usr/include/boost/polygon/detail/scan_arbitrary.hpp: In function 'bool boost::polygon::test_arbitrary_boolean_op(stream_type&)':
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2653:5: error: 'polygon_set_data' was not declared in this scope
polygon_set_data<Unit> psd;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2653:26: error: expected primary-expression before '>' token
polygon_set_data<Unit> psd;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2653:28: error: 'psd' was not declared in this scope
polygon_set_data<Unit> psd;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2657:26: error: expected primary-expression before '>' token
polygon_set_data<Unit> psd2;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2657:28: error: 'psd2' was not declared in this scope
polygon_set_data<Unit> psd2;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2660:17: error: 'polygon_data' was not declared in this scope
std::vector<polygon_data<Unit> > pv;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2660:34: error: template argument 1 is invalid
std::vector<polygon_data<Unit> > pv;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2660:34: error: template argument 2 is invalid
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2660:36: error: expected unqualified-id before '>' token
std::vector<polygon_data<Unit> > pv;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2661:5: error: 'pv' was not declared in this scope
pv.clear();
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2663:26: error: expected primary-expression before '>' token
polygon_set_data<Unit> psd3;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2663:28: error: 'psd3' was not declared in this scope
polygon_set_data<Unit> psd3;
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp: At global scope:
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2710:65: error: expected template-name before '<' token
class arbitrary_connectivity_extraction : public scanline_base<Unit> {
^
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2710:65: error: expected '{' before '<' token
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:2710:65: error: expected unqualified-id before '<' token
In file included from test.cpp:17:0:
/usr/include/boost/polygon/segment_utils.hpp: In function 'typename boost::enable_if<typename boost::polygon::gtl_and<typename boost::polygon::gtl_if<typename boost::polygon::is_segment_concept<typename boost::polygon::geometry_concept<typename std::iterator_traits<_Iterator1>::value_type>::type>::type>::type, typename boost::polygon::gtl_if<typename boost::polygon::is_segment_concept<typename boost::polygon::geometry_concept<GeometryType>::type>::type>::type>::type, void>::type boost::polygon::intersect_segments(std::vector<std::pair<long unsigned int, Segment> >&, SegmentIterator, SegmentIterator)':
/usr/include/boost/polygon/segment_utils.hpp:46:20: error: expected nested-name-specifier before 'scanline_base'
typedef typename scanline_base<Unit>::Point Point;
^
/usr/include/boost/polygon/segment_utils.hpp:46:33: error: expected initializer before '<' token
typedef typename scanline_base<Unit>::Point Point;
^
/usr/include/boost/polygon/segment_utils.hpp:47:20: error: expected nested-name-specifier before 'scanline_base'
typedef typename scanline_base<Unit>::half_edge half_edge;
^
/usr/include/boost/polygon/segment_utils.hpp:47:33: error: expected initializer before '<' token
typedef typename scanline_base<Unit>::half_edge half_edge;
^
/usr/include/boost/polygon/segment_utils.hpp:49:25: error: 'half_edge' was not declared in this scope
std::vector<std::pair<half_edge, segment_id> > half_edges;
^
/usr/include/boost/polygon/segment_utils.hpp:49:46: error: template argument 1 is invalid
std::vector<std::pair<half_edge, segment_id> > half_edges;
^
/usr/include/boost/polygon/segment_utils.hpp:49:48: error: template argument 1 is invalid
std::vector<std::pair<half_edge, segment_id> > half_edges;
^
/usr/include/boost/polygon/segment_utils.hpp:49:48: error: template argument 2 is invalid
/usr/include/boost/polygon/segment_utils.hpp:50:25: error: the value of 'half_edge' is not usable in a constant expression
std::vector<std::pair<half_edge, segment_id> > half_edges_out;
^
/usr/include/boost/polygon/segment_utils.hpp:49:25: note: 'half_edge' was not declared 'constexpr'
std::vector<std::pair<half_edge, segment_id> > half_edges;
^
/usr/include/boost/polygon/segment_utils.hpp:50:46: error: type/value mismatch at argument 1 in template parameter list for 'template<class _T1, class _T2> struct std::pair'
std::vector<std::pair<half_edge, segment_id> > half_edges_out;
^
/usr/include/boost/polygon/segment_utils.hpp:50:46: note: expected a type, got 'half_edge'
/usr/include/boost/polygon/segment_utils.hpp:50:48: error: template argument 1 is invalid
std::vector<std::pair<half_edge, segment_id> > half_edges_out;
^
/usr/include/boost/polygon/segment_utils.hpp:50:48: error: template argument 2 is invalid
/usr/include/boost/polygon/segment_utils.hpp:52:14: error: request for member 'reserve' in 'half_edges', which is of non-class type 'int'
half_edges.reserve(std::distance(first, last));
^
/usr/include/boost/polygon/segment_utils.hpp:57:16: error: request for member 'push_back' in 'half_edges', which is of non-class type 'int'
half_edges.push_back(std::make_pair(half_edge(l, h), id_in++));
^
/usr/include/boost/polygon/segment_utils.hpp:59:18: error: request for member 'reserve' in 'half_edges_out', which is of non-class type 'int'
half_edges_out.reserve(half_edges.size());
^
/usr/include/boost/polygon/segment_utils.hpp:59:37: error: request for member 'size' in 'half_edges', which is of non-class type 'int'
half_edges_out.reserve(half_edges.size());
^
/usr/include/boost/polygon/segment_utils.hpp:61:18: error: request for member 'size' in 'half_edges', which is of non-class type 'int'
if (half_edges.size() != 0) {
^
/usr/include/boost/polygon/segment_utils.hpp:63:36: error: request for member 'begin' in 'half_edges', which is of non-class type 'int'
half_edges_out, half_edges.begin(), half_edges.end());
^
/usr/include/boost/polygon/segment_utils.hpp:63:56: error: request for member 'end' in 'half_edges', which is of non-class type 'int'
half_edges_out, half_edges.begin(), half_edges.end());
^
/usr/include/boost/polygon/segment_utils.hpp:66:49: error: request for member 'size' in 'half_edges_out', which is of non-class type 'int'
result.reserve(result.size() + half_edges_out.size());
^
/usr/include/boost/polygon/segment_utils.hpp:67:46: error: request for member 'size' in 'half_edges_out', which is of non-class type 'int'
for (std::size_t i = 0; i < half_edges_out.size(); ++i) {
^
/usr/include/boost/polygon/segment_utils.hpp:68:52: error: invalid types 'int[std::size_t {aka long unsigned int}]' for array subscript
std::size_t id = (std::size_t)(half_edges_out[i].second);
^
/usr/include/boost/polygon/segment_utils.hpp:69:31: error: invalid types 'int[std::size_t {aka long unsigned int}]' for array subscript
Point l = half_edges_out[i].first.first;
^
/usr/include/boost/polygon/segment_utils.hpp:70:31: error: invalid types 'int[std::size_t {aka long unsigned int}]' for array subscript
Point h = half_edges_out[i].first.second;
^
/usr/include/boost/polygon/segment_utils.hpp: In function 'typename boost::enable_if<typename boost::polygon::gtl_and<typename boost::polygon::gtl_if<typename boost::polygon::is_segment_concept<typename boost::polygon::geometry_concept<typename std::iterator_traits<_Iterator1>::value_type>::type>::type>::type, typename boost::polygon::gtl_if<typename boost::polygon::is_segment_concept<typename boost::polygon::geometry_concept<typename SegmentContainer::value_type>::type>::type>::type>::type, void>::type boost::polygon::intersect_segments(SegmentContainer&, SegmentIterator, SegmentIterator)':
/usr/include/boost/polygon/segment_utils.hpp:101:20: error: expected nested-name-specifier before 'scanline_base'
typedef typename scanline_base<Unit>::Point Point;
^
/usr/include/boost/polygon/segment_utils.hpp:101:33: error: expected initializer before '<' token
typedef typename scanline_base<Unit>::Point Point;
^
/usr/include/boost/polygon/segment_utils.hpp:102:20: error: expected nested-name-specifier before 'scanline_base'
typedef typename scanline_base<Unit>::half_edge half_edge;
^
/usr/include/boost/polygon/segment_utils.hpp:102:33: error: expected initializer before '<' token
typedef typename scanline_base<Unit>::half_edge half_edge;
^
/usr/include/boost/polygon/segment_utils.hpp:104:25: error: 'half_edge' was not declared in this scope
std::vector<std::pair<half_edge, segment_id> > half_edges;
^
/usr/include/boost/polygon/segment_utils.hpp:104:46: error: template argument 1 is invalid
std::vector<std::pair<half_edge, segment_id> > half_edges;
^
/usr/include/boost/polygon/segment_utils.hpp:104:48: error: template argument 1 is invalid
std::vector<std::pair<half_edge, segment_id> > half_edges;
^
/usr/include/boost/polygon/segment_utils.hpp:104:48: error: template argument 2 is invalid
/usr/include/boost/polygon/segment_utils.hpp:105:25: error: the value of 'half_edge' is not usable in a constant expression
std::vector<std::pair<half_edge, segment_id> > half_edges_out;
^
/usr/include/boost/polygon/segment_utils.hpp:104:25: note: 'half_edge' was not declared 'constexpr'
std::vector<std::pair<half_edge, segment_id> > half_edges;
^
/usr/include/boost/polygon/segment_utils.hpp:105:46: error: type/value mismatch at argument 1 in template parameter list for 'template<class _T1, class _T2> struct std::pair'
std::vector<std::pair<half_edge, segment_id> > half_edges_out;
^
/usr/include/boost/polygon/segment_utils.hpp:105:46: note: expected a type, got 'half_edge'
/usr/include/boost/polygon/segment_utils.hpp:105:48: error: template argument 1 is invalid
std::vector<std::pair<half_edge, segment_id> > half_edges_out;
^
/usr/include/boost/polygon/segment_utils.hpp:105:48: error: template argument 2 is invalid
/usr/include/boost/polygon/segment_utils.hpp:107:14: error: request for member 'reserve' in 'half_edges', which is of non-class type 'int'
half_edges.reserve(std::distance(first, last));
^
/usr/include/boost/polygon/segment_utils.hpp:112:16: error: request for member 'push_back' in 'half_edges', which is of non-class type 'int'
half_edges.push_back(std::make_pair(half_edge(l, h), id_in++));
^
/usr/include/boost/polygon/segment_utils.hpp:114:18: error: request for member 'reserve' in 'half_edges_out', which is of non-class type 'int'
half_edges_out.reserve(half_edges.size());
^
/usr/include/boost/polygon/segment_utils.hpp:114:37: error: request for member 'size' in 'half_edges', which is of non-class type 'int'
half_edges_out.reserve(half_edges.size());
^
/usr/include/boost/polygon/segment_utils.hpp:116:18: error: request for member 'size' in 'half_edges', which is of non-class type 'int'
if (half_edges.size() != 0) {
^
/usr/include/boost/polygon/segment_utils.hpp:118:36: error: request for member 'begin' in 'half_edges', which is of non-class type 'int'
half_edges_out, half_edges.begin(), half_edges.end());
^
/usr/include/boost/polygon/segment_utils.hpp:118:56: error: request for member 'end' in 'half_edges', which is of non-class type 'int'
half_edges_out, half_edges.begin(), half_edges.end());
^
/usr/include/boost/polygon/segment_utils.hpp:121:49: error: request for member 'size' in 'half_edges_out', which is of non-class type 'int'
result.reserve(result.size() + half_edges_out.size());
^
/usr/include/boost/polygon/segment_utils.hpp:122:46: error: request for member 'size' in 'half_edges_out', which is of non-class type 'int'
for (std::size_t i = 0; i < half_edges_out.size(); ++i) {
^
/usr/include/boost/polygon/segment_utils.hpp:123:31: error: invalid types 'int[std::size_t {aka long unsigned int}]' for array subscript
Point l = half_edges_out[i].first.first;
^
/usr/include/boost/polygon/segment_utils.hpp:124:31: error: invalid types 'int[std::size_t {aka long unsigned int}]' for array subscript
Point h = half_edges_out[i].first.second;
Could this mean that I need to implement the Unit concept as well? If so, how is that done?
Edit: My code is the same as this code: http://www.boost.org/doc/libs/1_61_0/libs/polygon/example/voronoi_basic_tutorial.cpp but then with #include <boost/polygon/segment_utils.hpp> added.
You just need to #include <boost/polygon/polygon.hpp> before including <boost/polygon/segment_utils.hpp>.
/usr/include/boost/polygon/detail/scan_arbitrary.hpp:17:49: error: expected template-name before '<' token
class line_intersection : public scanline_base<Unit> {
^
This error suggests you've defined line_intersection as a macro, because it's complaining about a < token where there isn't one in the source.
But since you haven't shown any code, we can't tell.
Edit after updated question:
This seems to be a a Boost bug, it can be reproduced with a file consisting of nothing but:
#include <boost/polygon/segment_utils.hpp>
I am new to QT,so I want to write a "Hello World" to learn QT first.
1.First,I install the QT5 on my computer.(Archlinux).
sudo pacman -S qt5-base qt5
Then,I install qt-creator.
sudo pacman -S qtcreator
And,I use QT creator to create a new project(I select Qt widgets Application).
the IDE generate some code automatically.I don't add any code to the source file.
.pro:
#-------------------------------------------------
#
# Project created by QtCreator 2017-05-21T14:48:56
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = untitled
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact
warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated
APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain
version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all
the APIs deprecated before Qt 6.0.0
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
I think it should generate a blank window when I build and run.
However,When I try to build and run.There are so many issues.
The Picture
I don't know why this happen.
Then I try to use the official examples.I follow the official tutorial Building and Running an Example.Howerver,same issues occurs when I try to build and run.
2.Wyzard say that I should use std=c++11 to compile the program.
So,I create a main.cpp file.
main.cpp:
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton hello("Hello world!");
hello.resize(100, 30);
hello.show();
return app.exec();
}
Then,I use qmake to generate a makefile.
$qmake -project
$qmake
And,I add -std=c++11 to the compile flags.
make
output:
g++ -c -pipe -O2 -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -std=c++11 -I. -I. -isystem /usr/include/qt -isystem /usr/include/qt/QtGui -isystem /usr/include/qt/QtCore -I. -isystem /usr/include/libdrm -I/usr/lib/qt/mkspecs/linux-g++ -I/usr/include/qt/QtWidgets/ -o hello.o hello.cpp
In file included from /usr/include/qt/QtCore/qbasicatomic.h:53:0,
from /usr/include/qt/QtCore/qatomic.h:46,
from /usr/include/qt/QtCore/qglobal.h:1129,
from /usr/include/qt/QtGui/qtguiglobal.h:43,
from /usr/include/qt/QtWidgets/qtwidgetsglobal.h:43,
from /usr/include/qt/QtWidgets/qapplication.h:43,
from /usr/include/qt/QtWidgets/QApplication:1,
from hello.cpp:1:
/usr/include/qt/QtCore/qatomic_cxx11.h:222:18: error: ‘atomic’ in namespace ‘std’ does not name a template type
typedef std::atomic<X> Type;
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:225:23: error: ‘atomic’ in namespace ‘std’ does not name a template type
T load(const std::atomic<T> &_q_value) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:225:29: error: expected ‘,’ or ‘...’ before ‘<’ token
T load(const std::atomic<T> &_q_value) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:231:32: error: ‘atomic’ in namespace ‘std’ does not name a template type
T load(const volatile std::atomic<T> &_q_value) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:231:38: error: expected ‘,’ or ‘...’ before ‘<’ token
T load(const volatile std::atomic<T> &_q_value) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:231:7: error: ‘template<class X> template<class T> static T QAtomicOps<X>::load(int)’ cannot be overloaded
T load(const volatile std::atomic<T> &_q_value) Q_DECL_NOTHROW
^~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:225:7: error: with ‘template<class X> template<class T> static T QAtomicOps<X>::load(int)’
T load(const std::atomic<T> &_q_value) Q_DECL_NOTHROW
^~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:237:30: error: ‘atomic’ in namespace ‘std’ does not name a template type
T loadAcquire(const std::atomic<T> &_q_value) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:237:36: error: expected ‘,’ or ‘...’ before ‘<’ token
T loadAcquire(const std::atomic<T> &_q_value) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:243:39: error: ‘atomic’ in namespace ‘std’ does not name a template type
T loadAcquire(const volatile std::atomic<T> &_q_value) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:243:45: error: expected ‘,’ or ‘...’ before ‘<’ token
T loadAcquire(const volatile std::atomic<T> &_q_value) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:243:7: error: ‘template<class X> template<class T> static T QAtomicOps<X>::loadAcquire(int)’ cannot be overloaded
T loadAcquire(const volatile std::atomic<T> &_q_value) Q_DECL_NOTHROW
^~~~~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:237:7: error: with ‘template<class X> template<class T> static T QAtomicOps<X>::loadAcquire(int)’
T loadAcquire(const std::atomic<T> &_q_value) Q_DECL_NOTHROW
^~~~~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:249:21: error: ‘std::atomic’ has not been declared
void store(std::atomic<T> &_q_value, T newValue) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:249:27: error: expected ‘,’ or ‘...’ before ‘<’ token
void store(std::atomic<T> &_q_value, T newValue) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:255:28: error: ‘std::atomic’ has not been declared
void storeRelease(std::atomic<T> &_q_value, T newValue) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:255:34: error: expected ‘,’ or ‘...’ before ‘<’ token
void storeRelease(std::atomic<T> &_q_value, T newValue) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:263:33: error: ‘std::atomic’ has not been declared
static inline bool ref(std::atomic<T> &_q_value)
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:263:39: error: expected ‘,’ or ‘...’ before ‘<’ token
static inline bool ref(std::atomic<T> &_q_value)
^
/usr/include/qt/QtCore/qatomic_cxx11.h:269:35: error: ‘std::atomic’ has not been declared
static inline bool deref(std::atomic<T> &_q_value) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:269:41: error: expected ‘,’ or ‘...’ before ‘<’ token
static inline bool deref(std::atomic<T> &_q_value) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:279:40: error: ‘std::atomic’ has not been declared
static bool testAndSetRelaxed(std::atomic<T> &_q_value, T expectedValue, T newValue, T *currentValue = Q_NULLPTR) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:279:46: error: expected ‘,’ or ‘...’ before ‘<’ token
static bool testAndSetRelaxed(std::atomic<T> &_q_value, T expectedValue, T newValue, T *currentValue = Q_NULLPTR) Q_DECL_NOTHROW
^
In file included from /usr/include/qt/QtCore/qbasicatomic.h:53:0,
from /usr/include/qt/QtCore/qatomic.h:46,
from /usr/include/qt/QtCore/qglobal.h:1129,
from /usr/include/qt/QtGui/qtguiglobal.h:43,
from /usr/include/qt/QtWidgets/qtwidgetsglobal.h:43,
from /usr/include/qt/QtWidgets/qapplication.h:43,
from /usr/include/qt/QtWidgets/QApplication:1,
from hello.cpp:1:
/usr/include/qt/QtCore/qatomic_cxx11.h:288:40: error: ‘std::atomic’ has not been declared
static bool testAndSetAcquire(std::atomic<T> &_q_value, T expectedValue, T newValue, T *currentValue = Q_NULLPTR) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:288:46: error: expected ‘,’ or ‘...’ before ‘<’ token
static bool testAndSetAcquire(std::atomic<T> &_q_value, T expectedValue, T newValue, T *currentValue = Q_NULLPTR) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:297:40: error: ‘std::atomic’ has not been declared
static bool testAndSetRelease(std::atomic<T> &_q_value, T expectedValue, T newValue, T *currentValue = Q_NULLPTR) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:297:46: error: expected ‘,’ or ‘...’ before ‘<’ token
static bool testAndSetRelease(std::atomic<T> &_q_value, T expectedValue, T newValue, T *currentValue = Q_NULLPTR) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:306:40: error: ‘std::atomic’ has not been declared
static bool testAndSetOrdered(std::atomic<T> &_q_value, T expectedValue, T newValue, T *currentValue = Q_NULLPTR) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:306:46: error: expected ‘,’ or ‘...’ before ‘<’ token
static bool testAndSetOrdered(std::atomic<T> &_q_value, T expectedValue, T newValue, T *currentValue = Q_NULLPTR) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:318:40: error: ‘std::atomic’ has not been declared
static T fetchAndStoreRelaxed(std::atomic<T> &_q_value, T newValue) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:318:46: error: expected ‘,’ or ‘...’ before ‘<’ token
static T fetchAndStoreRelaxed(std::atomic<T> &_q_value, T newValue) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:324:40: error: ‘std::atomic’ has not been declared
static T fetchAndStoreAcquire(std::atomic<T> &_q_value, T newValue) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:324:46: error: expected ‘,’ or ‘...’ before ‘<’ token
static T fetchAndStoreAcquire(std::atomic<T> &_q_value, T newValue) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:330:40: error: ‘std::atomic’ has not been declared
static T fetchAndStoreRelease(std::atomic<T> &_q_value, T newValue) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:330:46: error: expected ‘,’ or ‘...’ before ‘<’ token
static T fetchAndStoreRelease(std::atomic<T> &_q_value, T newValue) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:336:40: error: ‘std::atomic’ has not been declared
static T fetchAndStoreOrdered(std::atomic<T> &_q_value, T newValue) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:336:46: error: expected ‘,’ or ‘...’ before ‘<’ token
static T fetchAndStoreOrdered(std::atomic<T> &_q_value, T newValue) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:345:31: error: ‘std::atomic’ has not been declared
T fetchAndAddRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:345:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndAddRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:351:31: error: ‘std::atomic’ has not been declared
T fetchAndAddAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:351:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndAddAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:357:31: error: ‘std::atomic’ has not been declared
T fetchAndAddRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:357:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndAddRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:363:31: error: ‘std::atomic’ has not been declared
T fetchAndAddOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:363:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndAddOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:369:31: error: ‘std::atomic’ has not been declared
T fetchAndSubRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:369:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndSubRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:375:31: error: ‘std::atomic’ has not been declared
T fetchAndSubAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:375:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndSubAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:381:31: error: ‘std::atomic’ has not been declared
T fetchAndSubRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:381:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndSubRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:387:31: error: ‘std::atomic’ has not been declared
T fetchAndSubOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:387:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndSubOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:393:31: error: ‘std::atomic’ has not been declared
T fetchAndAndRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:393:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndAndRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:399:31: error: ‘std::atomic’ has not been declared
T fetchAndAndAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:399:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndAndAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:405:31: error: ‘std::atomic’ has not been declared
T fetchAndAndRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:405:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndAndRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:411:31: error: ‘std::atomic’ has not been declared
T fetchAndAndOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:411:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndAndOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:417:30: error: ‘std::atomic’ has not been declared
T fetchAndOrRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:417:36: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndOrRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:423:30: error: ‘std::atomic’ has not been declared
T fetchAndOrAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:423:36: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndOrAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:429:30: error: ‘std::atomic’ has not been declared
T fetchAndOrRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:429:36: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndOrRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:435:30: error: ‘std::atomic’ has not been declared
T fetchAndOrOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:435:36: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndOrOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:441:31: error: ‘std::atomic’ has not been declared
T fetchAndXorRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:441:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndXorRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:447:31: error: ‘std::atomic’ has not been declared
T fetchAndXorAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:447:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndXorAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:453:31: error: ‘std::atomic’ has not been declared
T fetchAndXorRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:453:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndXorRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
/usr/include/qt/QtCore/qatomic_cxx11.h:459:31: error: ‘std::atomic’ has not been declared
T fetchAndXorOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:459:37: error: expected ‘,’ or ‘...’ before ‘<’ token
T fetchAndXorOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW
^
In file included from /usr/include/qt/QtCore/qbasicatomic.h:53:0,
from /usr/include/qt/QtCore/qatomic.h:46,
from /usr/include/qt/QtCore/qglobal.h:1129,
from /usr/include/qt/QtGui/qtguiglobal.h:43,
from /usr/include/qt/QtWidgets/qtwidgetsglobal.h:43,
from /usr/include/qt/QtWidgets/qapplication.h:43,
from /usr/include/qt/QtWidgets/QApplication:1,
from hello.cpp:1:
/usr/include/qt/QtCore/qatomic_cxx11.h: In static member function ‘static T QAtomicOps<X>::load(int)’:
/usr/include/qt/QtCore/qatomic_cxx11.h:227:16: error: ‘_q_value’ was not declared in this scope
return _q_value.load(std::memory_order_relaxed);
^~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:227:30: error: ‘memory_order_relaxed’ is not a member of ‘std’
return _q_value.load(std::memory_order_relaxed);
^~~
/usr/include/qt/QtCore/qatomic_cxx11.h: In static member function ‘static T QAtomicOps<X>::load(int)’:
/usr/include/qt/QtCore/qatomic_cxx11.h:233:16: error: ‘_q_value’ was not declared in this scope
return _q_value.load(std::memory_order_relaxed);
^~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:233:30: error: ‘memory_order_relaxed’ is not a member of ‘std’
return _q_value.load(std::memory_order_relaxed);
^~~
/usr/include/qt/QtCore/qatomic_cxx11.h: In static member function ‘static T QAtomicOps<X>::loadAcquire(int)’:
/usr/include/qt/QtCore/qatomic_cxx11.h:239:16: error: ‘_q_value’ was not declared in this scope
return _q_value.load(std::memory_order_acquire);
^~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:239:30: error: ‘memory_order_acquire’ is not a member of ‘std’
return _q_value.load(std::memory_order_acquire);
^~~
/usr/include/qt/QtCore/qatomic_cxx11.h: In static member function ‘static T QAtomicOps<X>::loadAcquire(int)’:
/usr/include/qt/QtCore/qatomic_cxx11.h:245:16: error: ‘_q_value’ was not declared in this scope
return _q_value.load(std::memory_order_acquire);
^~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:245:30: error: ‘memory_order_acquire’ is not a member of ‘std’
return _q_value.load(std::memory_order_acquire);
^~~
/usr/include/qt/QtCore/qatomic_cxx11.h: In static member function ‘static void QAtomicOps<X>::store(int)’:
/usr/include/qt/QtCore/qatomic_cxx11.h:251:9: error: ‘_q_value’ was not declared in this scope
_q_value.store(newValue, std::memory_order_relaxed);
^~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:251:24: error: ‘newValue’ was not declared in this scope
_q_value.store(newValue, std::memory_order_relaxed);
^~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:251:34: error: ‘memory_order_relaxed’ is not a member of ‘std’
_q_value.store(newValue, std::memory_order_relaxed);
^~~
/usr/include/qt/QtCore/qatomic_cxx11.h: In static member function ‘static void QAtomicOps<X>::storeRelease(int)’:
/usr/include/qt/QtCore/qatomic_cxx11.h:257:9: error: ‘_q_value’ was not declared in this scope
_q_value.store(newValue, std::memory_order_release);
^~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:257:24: error: ‘newValue’ was not declared in this scope
_q_value.store(newValue, std::memory_order_release);
^~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:257:34: error: ‘memory_order_release’ is not a member of ‘std’
_q_value.store(newValue, std::memory_order_release);
^~~
/usr/include/qt/QtCore/qatomic_cxx11.h: In static member function ‘static bool QAtomicOps<X>::ref(int)’:
/usr/include/qt/QtCore/qatomic_cxx11.h:265:18: error: ‘_q_value’ was not declared in this scope
return ++_q_value != 0;
^~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h: In static member function ‘static bool QAtomicOps<X>::deref(int)’:
/usr/include/qt/QtCore/qatomic_cxx11.h:271:18: error: ‘_q_value’ was not declared in this scope
return --_q_value != 0;
^~~~~~~~
In file included from /usr/include/qt/QtCore/qbasicatomic.h:53:0,
from /usr/include/qt/QtCore/qatomic.h:46,
from /usr/include/qt/QtCore/qglobal.h:1129,
from /usr/include/qt/QtGui/qtguiglobal.h:43,
from /usr/include/qt/QtWidgets/qtwidgetsglobal.h:43,
from /usr/include/qt/QtWidgets/qapplication.h:43,
from /usr/include/qt/QtWidgets/QApplication:1,
from hello.cpp:1:
/usr/include/qt/QtCore/qatomic_cxx11.h: In static member function ‘static bool QAtomicOps<X>::testAndSetRelaxed(int)’:
/usr/include/qt/QtCore/qatomic_cxx11.h:281:20: error: ‘_q_value’ was not declared in this scope
bool tmp = _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_relaxed);
^~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:281:53: error: ‘expectedValue’ was not declared in this scope
bool tmp = _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_relaxed);
^~~~~~~~~~~~~
/usr/include/qt/QtCore/qatomic_cxx11.h:281:68: error: ‘newValue’ was not declared in this scope
bool tmp = _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_relaxed);
^~~~~~~~
.......
English is not my native language; please excuse typing errors.
Your screenshot shows that the errors are in a file called qatomic_cxx11.h, and they relate to features that were added to the language in C++11. It's likely that your compiler is treating the code as C++98, where things like std::atomic don't exist.
You probably need to add -std=c++11 as a compile option, to tell it to compile as C++11. (Or, if your compiler supports it, use std=c++14 to compile as C++14.)
I want to install the OpenGL library under CygWin.
I added the Cygwin packages: tiff-opengl,libQtOpenGL4,libQtOpenGl4-devel. Probably I don't need the last 2 packeges- I installed them to try to run the OpenGL.
The program that I want to comile using OpenGL, named test15.c is:
#include <GL/gl.h>
#include <GL/glut.h>
void display()
{
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutDisplayFunc(display);
glutMainLoop();
}
However, I've got all these error messages.
User#User-PC ~/toto
$ gcc -o test15.exe test15.c -lopengl32 -lglu32 -lglut32
In file included from /usr/include/GL/freeglut_std.h:129:0,
from /usr/include/GL/glut.h:17,
from test15.c:2:
/usr/include/w32api/GL/glu.h:68:79: error: expected ‘)’ before ‘*’ token
void APIENTRY gluQuadricCallback(GLUquadric *qobj,GLenum which,void (CALLBACK *fn)());
^
/usr/include/w32api/GL/glu.h:78:79: error: expected ‘)’ before ‘*’ token
void APIENTRY gluTessCallback(GLUtesselator *tess,GLenum which,void (CALLBACK *fn)());
^
/usr/include/w32api/GL/glu.h:94:75: error: expected ‘)’ before ‘*’ token
void APIENTRY gluNurbsCallback(GLUnurbs *nobj,GLenum which,void (CALLBACK *fn)());
^
/usr/include/w32api/GL/glu.h:96:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUquadricErrorProc)(GLenum);
^
/usr/include/w32api/GL/glu.h:97:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUtessBeginProc)(GLenum);
^
/usr/include/w32api/GL/glu.h:98:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUtessEdgeFlagProc) (GLboolean);
^
/usr/include/w32api/GL/glu.h:99:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUtessVertexProc)(void *);
^
/usr/include/w32api/GL/glu.h:100:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUtessEndProc)(void);
^
/usr/include/w32api/GL/glu.h:101:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUtessErrorProc)(GLenum);
^
/usr/include/w32api/GL/glu.h:102:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUtessCombineProc)(GLdouble[3],void*[4],GLfloat[4],void**);
^
/usr/include/w32api/GL/glu.h:103:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUtessBeginDataProc)(GLenum,void *);
^
/usr/include/w32api/GL/glu.h:104:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUtessEdgeFlagDataProc) (GLboolean,void *);
^
/usr/include/w32api/GL/glu.h:105:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUtessVertexDataProc)(void *,void *);
^
/usr/include/w32api/GL/glu.h:106:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUtessEndDataProc)(void *);
^
/usr/include/w32api/GL/glu.h:107:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUtessErrorDataProc)(GLenum,void *);
^
/usr/include/w32api/GL/glu.h:108:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUtessCombineDataProc)(GLdouble[3],void*[4],GLfloat[4],void**,void*);
^
/usr/include/w32api/GL/glu.h:109:24: error: expected ‘)’ before ‘*’ token
typedef void (CALLBACK *GLUnurbsErrorProc)(GLenum);
^
What can I do to be able to compile the code using OpenGL?