So I thought I installed GDAL correctly using aptitude, and all my makefile has is
` g++ main.cpp -I/usr/include/mysql -lmysqlclient -I/usr/include/gdal -lgdal1.7.0'
But I am getting this error on my make "ubuntu vm"
`g++ main.cpp -I/usr/include/mysql -lmysqlclient -I/usr/include/gdal -lgdal1.7.0
In file included from /usr/include/c++/4.6/vector:65:0,
from /usr/include/gdal/gdal_priv.h:58,
from main.cpp:5:
/usr/include/c++/4.6/bits/stl_vector.h: In member function ‘std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::_M_check_len(std::vector<_Tp, _Alloc>::size_type, const char*) const’:
/usr/include/c++/4.6/bits/stl_vector.h:1244:40: error: expected unqualified-id before ‘(’ token
In file included from /usr/include/c++/4.6/vector:66:0,
from /usr/include/gdal/gdal_priv.h:58,
from main.cpp:5:
/usr/include/c++/4.6/bits/stl_bvector.h: In member function ‘std::vector<bool, _Alloc>::size_type std::vector<bool, _Alloc>::_M_check_len(std::vector<bool, _Alloc>::size_type, const char*) const’:
/usr/include/c++/4.6/bits/stl_bvector.h:1026:45: error: expected unqualified-id before ‘(’ token
make: *** [all] Error 1
`
Don't really know how to solve this one
Here is all my code:
#include <iostream>
#include "sql.h"
#include "gdal_priv.h"
#include "cpl_conv.h"
int main(int argc, char ** argv){
GDALDataset *poDataset;
return 0;
}
This looks more like an STL/vector issue than a GDAL specific problem. Something is going wrong when gdal_priv.h does
#include <vector>
I'd first check if you can compile something like this:
#include <vector>
int main(int argc, char ** argv){
std::vector<int> foo;
}
Related
I'm just now getting into OpenCV (4.1.0) in C++ (relatively new to both) and I'm getting an odd error from simply including some header files. (GCC 6.3.0)
Error:
from c:\Users\Logan\Projects\Code\C++\webcamTest.cpp:1:
C:\Users\Logan\Projects\Code\C++\Includes\opencv\build\include/opencv2/core/utility.hpp:697:14: error: 'recursive_mutex' in namespace 'std' does not name a type
typedef std::recursive_mutex Mutex;
^~~~~~~~~~~~~~~
C:\Users\Logan\Projects\Code\C++\Includes\opencv\build\include/opencv2/core/utility.hpp:698:25: error: 'Mutex' is not a member of 'cv'
typedef std::lock_guard<cv::Mutex> AutoLock;
^~
C:\Users\Logan\Projects\Code\C++\Includes\opencv\build\include/opencv2/core/utility.hpp:698:25: error: 'Mutex' is not a member of 'cv'
C:\Users\Logan\Projects\Code\C++\Includes\opencv\build\include/opencv2/core/utility.hpp:698:34: error: template argument 1 is invalid
typedef std::lock_guard<cv::Mutex> AutoLock;
Code:
#include <opencv2/core.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>
int main()
{
return 0;
}
To me this looks like an error with the way the headers are set up, but perhaps I didn't set something up correctly?
Currently the command I'm using is as follows:
g++ -std=c++11 -g -I C:\\Users\\Logan\\Projects\\Code\\C++\\Includes\\opencv\\build\\include -o C:\\Users\\Logan\\Projects\\Code\\C++\\Bins\\<File name I'm using in the editor>.exe <File I'm using in the editor>
I'm trying to use Eigen3 to compute some complex eigenvalues and sofar everything worked, but know I get a weird error:
g++ -I/usr/include/eigen3/ -Icubature/ -I/usr/include/boost/ cubature/hcubature.c main.cpp wavefunction.cpp -o main.x
main.cpp: In function ‘int main(int, char**)’:
main.cpp:103:2: error: ‘ComplexEigenSolver’ was not declared in this scope
ComplexEigenSolver<MatrixXcd> ces;
^~~~~~~~~~~~~~~~~~
main.cpp:103:2: note: suggested alternative:
In file included from /usr/include/eigen3/Eigen/Eigenvalues:35:0,
from /usr/include/eigen3/Eigen/Dense:7,
from main.cpp:4:
/usr/include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h:45:38: note: ‘Eigen::ComplexEigenSolver’
template<typename _MatrixType> class ComplexEigenSolver
^~~~~~~~~~~~~~~~~~
main.cpp:103:30: error: expected primary-expression before ‘>’ token
ComplexEigenSolver<MatrixXcd> ces;
^
main.cpp:103:32: error: ‘ces’ was not declared in this scope
ComplexEigenSolver<MatrixXcd> ces;
^~~
make: *** [Makefile:2: all] Error 1
Here are my includes:
#include <iostream>
#include <vector>
#include <Eigen/Core>
#include <Eigen/Dense>
#include <Eigen/Eigenvalues>
#include "wavefunction.cpp"
#include "cubature.h"
using Eigen::MatrixXcd;
This is the routine where the error occurs:
MatrixXcd hop(5,5);
for(int m1 = -2; m1 <= 2; m1++){
for(int m2 = -2; m2 <= 2; m2++){
hop(m1+2, m2+2) = ....;
}
}
ComplexEigenSolver<MatrixXcd> ces;
Everything works fine, only the last line doesn't work. I don't see the difference between my code and the example given at the Eigen website.
What am I doing wrong?
So all I am trying to do is compile my program with opencv-2.3 . This is all under the assumtion that I installed everything correctly.
My Main is super simple:
#include <iostream>
#include <opencv/cv.h>
int main(int argv, char** argc){
std::cout << "Hello World" << std::endl;
return 0;
}
My MakeFile is super simple.
g++ main.cpp `pkg-config opencv --cflags --libs`
And the error is really confusing:
make
g++ main.cpp \
`pkg-config opencv --cflags --libs`
In file included from /usr/include/c++/4.6/bits/stl_algo.h:62:0,
from /usr/include/c++/4.6/algorithm:63,
from /usr/local/include/opencv2/core/core.hpp:56,
from /usr/local/include/opencv/cv.h:64,
from main.cpp:8:
/usr/include/c++/4.6/bits/algorithmfwd.h:358:41: error: macro "max" passed 3 arguments, but takes just 2
/usr/include/c++/4.6/bits/algorithmfwd.h:369:41: error: macro "min" passed 3 arguments, but takes just 2
In file included from /usr/include/c++/4.6/bits/stl_algo.h:62:0,
from /usr/include/c++/4.6/algorithm:63,
from /usr/local/include/opencv2/core/core.hpp:56,
from /usr/local/include/opencv/cv.h:64,
from main.cpp:8:
/usr/include/c++/4.6/bits/algorithmfwd.h:354:5: error: expected unqualified-id before ‘const’
/usr/include/c++/4.6/bits/algorithmfwd.h:354:5: error: expected ‘)’ before ‘const’
/usr/include/c++/4.6/bits/algorithmfwd.h:354:5: error: expected ‘)’ before ‘const’
/usr/include/c++/4.6/bits/algorithmfwd.h:354:5: error: expected initializer before ‘const’
/usr/include/c++/4.6/bits/algorithmfwd.h:358:5: error: template declaration of ‘const _Tp& std::max’
/usr/include/c++/4.6/bits/algorithmfwd.h:365:5: error: expected unqualified-id before ‘const’
/usr/include/c++/4.6/bits/algorithmfwd.h:365:5: error: expected ‘)’ before ‘const’
/usr/include/c++/4.6/bits/algorithmfwd.h:365:5: error: expected ‘)’ before ‘const’
/usr/include/c++/4.6/bits/algorithmfwd.h:365:5: error: expected initializer before ‘const’
/usr/include/c++/4.6/bits/algorithmfwd.h:369:5: error: template declaration of ‘const _Tp& std::min’
In file included from /usr/include/c++/4.6/algorithm:63:0,
from /usr/local/include/opencv2/core/core.hpp:56,
from /usr/local/include/opencv/cv.h:64,
from main.cpp:8:
/usr/include/c++/4.6/bits/stl_algo.h: In function ‘void std::__merge_sort_loop(_RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, _Distance)’:
/usr/include/c++/4.6/bits/stl_algo.h:3285:26: error: expected unqualified-id before ‘(’ token
/usr/include/c++/4.6/bits/stl_algo.h: In function ‘void std::__merge_sort_loop(_RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, _Distance, _Compare)’:
/usr/include/c++/4.6/bits/stl_algo.h:3308:26: error: expected unqualified-id before ‘(’ token
In file included from /usr/local/include/opencv2/core/core.hpp:59:0,
from /usr/local/include/opencv/cv.h:64,
from main.cpp:8:
/usr/include/c++/4.6/complex: In function ‘_Tp std::__complex_abs(const std::complex<_Tp>&)’:`
/usr/include/c++/4.6/complex:571:28: error: expected unqualified-id before ‘(’ token
In file included from /usr/include/c++/4.6/vector:65:0,
from /usr/local/include/opencv2/core/core.hpp:63,
from /usr/local/include/opencv/cv.h:64,
from main.cpp:8:
/usr/include/c++/4.6/bits/stl_vector.h: In member function ‘std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::_M_check_len(std::vector<_Tp, _Alloc>::size_type, const char*) const’:
/usr/include/c++/4.6/bits/stl_vector.h:1244:40: error: expected unqualified-id before ‘(’ token
In file included from /usr/include/c++/4.6/vector:66:0,
from /usr/local/include/opencv2/core/core.hpp:63,
from /usr/local/include/opencv/cv.h:64,
from main.cpp:8:
/usr/include/c++/4.6/bits/stl_bvector.h: In member function ‘std::vector<bool, _Alloc>::size_type std::vector<bool, _Alloc>::_M_check_len(std::vector<bool, _Alloc>::size_type, const char*) const’:
/usr/include/c++/4.6/bits/stl_bvector.h:1026:45: error: expected unqualified-id before ‘(’ token
Now when I hit pkg-config --cflags --libs opencv in the terminal I get the correct place where all the libs and the .hpp and other files. So I have no idea what is going on here.
Thanks for the help!!
It might be caused by using the old, C headers. The new ones are located in <opencv2/opencv.hpp> if I remember correctly.
I'm using Dev C++ 4.9.9.2 and OpenCV 2.4.8, I'm also in Windows 7 x86. These are in my compiler setting, -L"D:\opencv\build\x86\vc12\bin" -lopencv_highgui248 -lopencv_core248 -lopencv_flann248 -lopencv_gpu248 -lopencv_imgproc248 -lopencv_legacy248 -lopencv_ml248 -lopencv_nonfree248 -lopencv_objdetect248 -lopencv_photo248 -lopencv_video248 -lopencv_ts248. Every time I compile my simple project, it shows this errors: Compiler:
OpenCV
Executing g++.exe...
g++.exe "D:\VS Projects\WebCam\WebCam\loadimg.cpp" -o "D:\VS Projects\WebCam\WebCam\loadimg.exe" -g3 -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -I"D:\opencv\build\include\opencv2" -I"D:\opencv\build\include" -L"C:\Dev-Cpp\lib" -L"D:\opencv\build\x86\vc12\lib" -g3
In file included from D:/opencv/build/include/opencv2/core/core.hpp:4854,
from D:/opencv/build/include/opencv2/opencv.hpp:47,
from D:\VS Projects\WebCam\WebCam\loadimg.cpp:1:
D:/opencv/build/include/opencv2/core/operations.hpp: In static member function `static cv::Ptr<_Tp2> cv::Algorithm::create(const std::string&)':
D:/opencv/build/include/opencv2/core/operations.hpp:3972: error: expected primary-expression before '>' token
D:/opencv/build/include/opencv2/core/operations.hpp:3972: error: expected primary-expression before ')' token
D:/opencv/build/include/opencv2/core/operations.hpp: At global scope:
D:/opencv/build/include/opencv2/core/operations.hpp:4024: error: got 2 template parameters for `void cv::AlgorithmInfo::addParam(cv::Algorithm&, const char*, cv::Ptr<_Tp2>&, bool, cv::Ptr<_Tp2> (cv::Algorithm::*)(), void (cv::Algorithm::*)(const cv::Ptr<_Tp2>&), const std::string&)'
D:/opencv/build/include/opencv2/core/operations.hpp:4024: error: but 1 required
D:/opencv/build/include/opencv2/core/operations.hpp:4033: error: redefinition of `void cv::AlgorithmInfo::addParam(cv::Algorithm&, const char*, cv::Ptr<_Tp2>&, bool, cv::Ptr<_Tp2> (cv::Algorithm::*)(), void (cv::Algorithm::*)(const cv::Ptr<_Tp2>&), const std::string&)'
D:/opencv/build/include/opencv2/core/operations.hpp:4024: error: `void cv::AlgorithmInfo::addParam(cv::Algorithm&, const char*, cv::Ptr<_Tp2>&, bool, cv::Ptr<_Tp2> (cv::Algorithm::*)(), void (cv::Algorithm::*)(const cv::Ptr<_Tp2>&), const std::string&)' previously declared here
Edit:
there is my code.
include <opencv2/opencv.hpp>
#include <iostream>
#include <io.h>
using namespace cv;
using namespace std;
int main (int, char**)
{
cv::VideoCapture camera(1);
if(!camera.isOpened())
{
std::cerr << "ERROR: Could not open camera" << std::endl;
return 1;
}
cv::namedWindow("Webcam", CV_WINDOW_AUTOSIZE);
while(1)
{
cv::Mat frame;
camera >> frame;
cv::imshow("Webcam", frame);
if (cv::waitKey(30) >= 0)
{
imwrite("test.jpg", frame);
break;
}
}
return 0;
}
Execution terminated
Can you please help me on this? Please.
Thanks.
I'm new to c++, and I've started a project for my internship where I have use to the Snap library from stanford (http://snap.stanford.edu/). So I have downloaded the library and I am now trying to create my own little programm using it. Sadly i can't seem to be able to compile it :(
Here are the sources :
Makefile :
CXXFLAGS += -std=c++98 -Wall
LDFLAGS += -lrt
Snap.o :
g++ -c $(CXXFLAGS) ../snap/snap/Snap.cpp -I../snap/glib -I../snap/snap -pg
simulation.o : simulation.cpp simulation.h
g++ -g -c $(CXXFLAGS) simulation.cpp
test.o : test.cpp
g++ -g -c $(CXXFLAGS) test.cpp
test : test.o Snap.o simulation.o
g++ -g $(LDFLAGS) test.o Snap.o simulation.o -I../snap/glib -I../snap/snap -lm -o test
simulation.h
#ifndef SIMULATION
#define SIMULATION
#include <vector>
#include "../snap/snap/Snap.h"
class Simulation{
public:
Simulation():score(-1),nNodes(-1),nEdges(-1), dMax(-1){};
Simulation(int nN, int nE, int d);
Simulation(int d, PUNGraph g);
void setDMax(int d){ dMax = d; }
double getScore(){ return score; }
int getNNodes(){ return nNodes; }
int getNEdges(){ return nEdges; }
int getDMax(){ return dMax; }
PUNGraph getGraph(){ return graph; }
std::vector<int> getAlignment(){ return alignment; }
double computeEnergy();
private:
double score;
int nNodes;
int nEdges;
int dMax;
PUNGraph graph;
std::vector<int> alignment;
};
#endif
simulation.cpp
#include "simulation.h"
#include <stdlib.h>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include "../snap/snap/Snap.h"
Simulation::Simulation(int nN, int nE, int d){
nNodes = nNodes;
nEdges = nEdges;
dMax = dMax;
graph = TSnap::GenRdnGnm<PUNGraph>(nNodes,nEdges);
for(int i=1; i<=nNodes; i++){
alignment.push_back(i);
}
random_shuffle(alignment.begin(),alignment.begin()+nNodes);
computeEnergy();
}
Simulation::Simulation(int d, PUNGraph g){
nNodes = graph->GetNodes();
nEdges = graph->GetEdges();
dMax = d;
graph = g;
for(int i=1; i<=nNodes; i++){
alignment.push_back(i);
}
random_shuffle(alignment.begin(),alignment.begin()+nNodes);
computeEnergy();
}
double computeEnergy(){
return 0.0;
}
test.cpp
#include<stdlib.h>
#include<stdio.h>
#include<vector>
#include<algorithm>
#include "simulation.h"
#include "../snap/snap/Snap.h"
int main(int argc, char** argv){
Simulation sim(5000,30000,30);
}
I don't think my compilation problems come from Snap itself and it might very well be only from my poor knowledge of c++ and how the includes an so on are working.
Here is what I get after running make :
g++ -g -c -std=c++98 -Wall simulation.cpp
In file included from /usr/include/c++/4.5/bits/stl_algo.h:61:0,
from /usr/include/c++/4.5/algorithm:63,
from simulation.cpp:5:
/usr/include/c++/4.5/bits/algorithmfwd.h:347:41: error: macro "max" passed 3 arguments, but takes just 2
/usr/include/c++/4.5/bits/algorithmfwd.h:358:41: error: macro "min" passed 3 arguments, but takes just 2
/usr/include/c++/4.5/bits/algorithmfwd.h:343:5: error: expected unqualified-id before ‘const’
/usr/include/c++/4.5/bits/algorithmfwd.h:343:5: error: expected ‘)’ before ‘const’
/usr/include/c++/4.5/bits/algorithmfwd.h:343:5: error: expected ‘)’ before ‘const’
/usr/include/c++/4.5/bits/algorithmfwd.h:343:5: error: expected initializer before ‘const’
/usr/include/c++/4.5/bits/algorithmfwd.h:347:5: error: template declaration of ‘const _Tp& std::max’
/usr/include/c++/4.5/bits/algorithmfwd.h:354:5: error: expected unqualified-id before ‘const’
/usr/include/c++/4.5/bits/algorithmfwd.h:354:5: error: expected ‘)’ before ‘const’
/usr/include/c++/4.5/bits/algorithmfwd.h:354:5: error: expected ‘)’ before ‘const’
/usr/include/c++/4.5/bits/algorithmfwd.h:354:5: error: expected initializer before ‘const’
/usr/include/c++/4.5/bits/algorithmfwd.h:358:5: error: template declaration of ‘const _Tp& std::min’
In file included from /usr/include/c++/4.5/algorithm:63:0,
from simulation.cpp:5:
/usr/include/c++/4.5/bits/stl_algo.h: In function ‘void std::__merge_sort_loop(_RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, _Distance)’:
/usr/include/c++/4.5/bits/stl_algo.h:3172:26: error: expected unqualified-id before ‘(’ token
/usr/include/c++/4.5/bits/stl_algo.h: In function ‘void std::__merge_sort_loop(_RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, _Distance, _Compare)’:
/usr/include/c++/4.5/bits/stl_algo.h:3202:26: error: expected unqualified-id before ‘(’ token
simulation.cpp: In constructor ‘Simulation::Simulation(int, int, int)’:
simulation.cpp:11:13: error: ‘GenRdnGnm’ is not a member of ‘TSnap’
simulation.cpp:11:38: error: expected primary-expression before ‘>’ token
simulation.cpp:11:47: warning: left-hand operand of comma has no effect
I'd be very glad if some one could help resolve my problems (and if you feel like giving some c++/programming wisdom in the process i'd be even happier :) )
Ortholle
The Snap library headers contain the unfortunate macro definitions:
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
This will cause problems with code that uses (or defines) std::min and std::max.
You can get around this by making sure to include STL headers before Snap, or possibly by adding
#undef min
#undef max
after including the Snap.h header.
Another problem with your code: What's with all those extraneous #includes? Example: Your test.cpp #includes a whole bunch of stuff it doesn't need. All that test.cpp needs is (or should need) simulation.h. simulation.cpp has a similar problem with far too many #includes.
Don't #include something in a file that isn't used in that file.
(Aside: that random_shuffle in simulation.cpp should be std::random_shuffle).
None of these fixes are going to help with the base problem, which is that the Snap library 'conveniently' defines max and min as macros. You don't need these, so undef them.