0

I ended up formatting the computer to ubuntu 16.04


Solutions I've tried based on the answers:

  • Just deleted 'using namespace std;' line and didn't work.
  • I put that line before and after '#include ', neither worked.

Thanks Yksisarvinen

  • Deleted all files other than QT's defaults app (and the images, of course)

  • tried this, but got the same error

     //#include "mainwindow.h"
     //#include <QApplication>
    
     #include <QtCore>
     int main() { qDebug() << "Hello, world!"; }
    
     /*
     int main(int argc, char *argv[])
     {
         QApplication a(argc, argv);
         MainWindow w;
         w.show();
    
         return a.exec();
     }
     */
    

Thanks Kuba Ober

  • Added the following line to the .pro file. This solution worked for compiling using QT

     INCLUDEPATH +=/usr/include  
    

but I still can't compile using the terminal (this is a part of my history)

    cat main.cpp
    g++ main.cpp
    echo $LD_LIBRARY_PATH
    g++ main.cpp
    LD_LIBRARY_PATH='' g++ main.cpp
    export LD_LIBRARY_PATH=''
    echo $LD_LIBRARY_PATH
    g++ main.cpp
    ls /usr/include/c++/7/
    echo $CXX
    echo $CC
    echo $CC=clang
    export CC=clang
    export CXX=clang++
    echo $CC=clang
    echo $CC
    g++ main.cpp
    echo $INCLUDEPATH
    export INCLUDEPATH = /usr/include
    export INCLUDEPATH=/usr/include
    echo $INCLUDEPATH
    ls
    g++ main.cpp
    echo $INCLUDEPATH
    history

I can work now (and probably I'll format ubuntu on vacations), but I don't want to mark this as solved since there is still something not working propperly.

Thanks Marcelo Cardenas (a friend from university)

  • Thanks for the tips anyway, hope we can solve this

I have this QT app: https://drive.google.com/file/d/15d4mYLgJcKOB5tpEwfuFBPXETUbR8CFK/view?usp=sharing

Which used to work. Now I'm getting this. 500+ errors of supposedly supposedly undefined functions.

I don't know where to even look for the error.

I'm currently working with:

  • OS: Ubuntu 18.04.1 LTS

  • Kernel: 4.16.0-041600-generic

  • Cuda: Built on Tue_Jun_12_23:07:04_CDT_2018 Cuda compilation tools,
    release 9.2, V9.2.148

  • gcc: (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0

  • QMake: version 3.1

  • Qt version: 5.9.6

  • OpenGL version: 3.0 Mesa 18.0.5

  • OpenCV version: 4.0.0 (obtained by the command cat /home/pablo/OpenCV-3.0.0/OpenCV-3.0.0-master/opencv/build/OpenCVConfig.cmake )

Here is the .pro file:

#-------------------------------------------------
#
# Project created by QtCreator 2018-10-31T18:03:31
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Ayudantia2
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has 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

CONFIG += c++11

SOURCES += \
        main.cpp \
        mainwindow.cpp

HEADERS += \
        mainwindow.h

FORMS += \
        mainwindow.ui

And the header

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <ui_mainwindow.h>
#include <set>
//#include <mainwindow.h>
#include <QMainWindow>

#include <QFileDialog>  //para buscar archivos por ventana
#include <QMessageBox>  //para mensajes del sistema
#include <QImage>       //para manipular imagenes basicamente(mas fome que opencv)

#include <cstdlib>

using namespace std;

#include <iostream>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

    public:
        explicit MainWindow(QWidget *parent = nullptr);
        ~MainWindow();


    public slots:
        void cargarTexto(QString);
        void cargarImagen(int area);
        void buscarImagen1();
        void buscarImagen2();
        void buscarImagen3();
        void mostrarImagen4();
        void mostrarImagen5();
        void mostrarImagen6();
        void filtrarImagen();
        void ponderar();
        void colorPlano();

    signals:
        void textoListo(QString);
        int imagenLista(int);
        int filtrar1(int);
        int filtrar2(int);
        int filtrar3(int);
        int valueChanged();
        void cambiocolor();
        QString ruta1(QString);
        QString ruta2(QString);
        QString ruta3(QString);

    private slots:

    private:
        Ui::MainWindow *ui;
        QImage imagenes[8];
};

#endif // MAINWINDOW_H

and this id the mainWindow

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget* parent):
    QMainWindow(parent),
    ui(new Ui::MainWindow){
        ui->setupUi(this);

        QObject::connect(ui->actionCargar_imagen_1, SIGNAL(triggered()),this, SLOT(buscarImagen1()));
        QObject::connect(ui->actionCargar_imagen_2, SIGNAL(triggered()),this, SLOT(buscarImagen2()));
        QObject::connect(ui->actionCargar_imagen_3, SIGNAL(triggered()),this, SLOT(buscarImagen3()));

        QObject::connect(ui->Fusion, SIGNAL(valueChanged(int)),this, SLOT(ponderar()));

        QObject::connect(this, SIGNAL(filtrar1(int)),this, SLOT(mostrarImagen4()));
        QObject::connect(this, SIGNAL(filtrar2(int)),this, SLOT(mostrarImagen5()));
        QObject::connect(this, SIGNAL(filtrar3(int)),this, SLOT(mostrarImagen6()));

        QObject::connect(this, SIGNAL(imagenLista(int)),this, SLOT(cargarImagen(int)));

        QObject::connect(ui->btn_Filtrar, SIGNAL(released()),this, SLOT(filtrarImagen()));

        QObject::connect(ui->RedSlider, SIGNAL(valueChanged(int)),this,SLOT(colorPlano()));
        QObject::connect(ui->BlueSlider, SIGNAL(valueChanged(int)),this,SLOT(colorPlano()));
        QObject::connect(ui->GreenSlider, SIGNAL(valueChanged(int)),this,SLOT(colorPlano()));

        QObject::connect(this, SIGNAL(cambiocolor()),this, SLOT(mostrarImagen7()));

        QImage imagenes[8];
        for(int i=0;i<8;i++){
            imagenes[i]=QImage();
        }
}

////////////////////////////////////////////////////////////////


void MainWindow::buscarImagen1(){
    QString fileName = QFileDialog::getOpenFileName(this, tr("Abrir Imagen"), "./", tr("Imagen (*.png *.jpg *.jpeg *.bmp *.ppm);; All files (*.*)"));
    if(fileName == "") return;
    //emit ruta1(fileName);
    emit textoListo(fileName);
    imagenes[0] = QImage(fileName);
    imagenes[0]= imagenes[0].scaled(170,170);
    if(imagenes[0].isNull()){
        QMessageBox::information(this, tr("Error de carga!!"),tr("No se puede cargar %1. ").arg(fileName));
        imagenes[0] = QImage();
        return;
    }
    ui->Ruta1->setText(fileName);
    emit imagenLista(0);
}

void MainWindow::buscarImagen2(){
    QString fileName = QFileDialog::getOpenFileName(this, tr("Abrir Imagen"), "./", tr("Imagen (*.png *.jpg *.jpeg *.bmp *.ppm);; All files (*.*)"));
    if(fileName == "") return;
    //emit ruta2(fileName);
    emit textoListo(fileName);
    imagenes[1] = QImage(fileName);
    imagenes[1]= imagenes[1].scaled(170,170);
    if(imagenes[1].isNull()){
        QMessageBox::information(this, tr("Error de carga!!"),tr("No se puede cargar %1. ").arg(fileName));
        imagenes[1] = QImage();
        return;
    }
    ui->Ruta2->setText(fileName);
    emit imagenLista(1);
}

void MainWindow::buscarImagen3(){
    QString fileName = QFileDialog::getOpenFileName(this, tr("Abrir Imagen"), "./", tr("Imagen (*.png *.jpg *.jpeg *.bmp *.ppm);; All files (*.*)"));
    if(fileName == "") return;
    //emit ruta3(fileName);
    emit textoListo(fileName);
    imagenes[2] = QImage(fileName);
    imagenes[2]= imagenes[2].scaled(170,170);
    if(imagenes[2].isNull()){
        QMessageBox::information(this, tr("Error de carga!!"),tr("No se puede cargar %1. ").arg(fileName));
        imagenes[2] = QImage();
        return;
    }
    ui->Ruta3->setText(fileName);
    emit imagenLista(2);
}
///////////////////////////////////////////////////////////////
void MainWindow::mostrarImagen4(){
    emit imagenLista(4);
}

void MainWindow::mostrarImagen5(){
    emit imagenLista(5);
}

void MainWindow::mostrarImagen6(){
    emit imagenLista(6);
}
///////////////////////////////////////////////////////////////scrollArea_1
void MainWindow::cargarTexto(QString texto){
        ui->Ruta1->setText(texto);
}

///////////////////////////
void MainWindow::cargarImagen(int area) {
    QImage *out = new QImage(imagenes[area]);
    QLabel *label = new QLabel;
    label->setPixmap(QPixmap::fromImage(*out, Qt::AutoColor));

    if (area == 0) ui->scrollArea_1->setWidget(label);
    if (area == 1) ui->scrollArea_2->setWidget(label);
    if (area == 2) ui->scrollArea_3->setWidget(label);
    if (area == 3) ui->scrollArea_4->setWidget(label);
    if (area == 4) ui->scrollArea_5->setWidget(label);
    if (area == 5) ui->scrollArea_6->setWidget(label);
    if (area == 6) ui->scrollArea_7->setWidget(label);
    if (area == 7) ui->scrollArea_8->setWidget(label);
}

//////////////////////////////////////////////////////////////
void MainWindow::filtrarImagen(){
    int R,G,B;
    QColor pixelRGB;
    imagenes[4]=imagenes[0];
    if(imagenes[4].isNull()) imagenes[4] = QImage();
    imagenes[5]=imagenes[1];
    if(imagenes[5].isNull()) imagenes[5] = QImage();
    imagenes[6]=imagenes[2];
    if(imagenes[6].isNull()) imagenes[6] = QImage();

    for(int k=0;k<3;k++){
        if (imagenes[k].isNull()) continue;
        for(int i=0;i<imagenes[k].height();i++){
            for(int j=0;j<imagenes[k].width();j++){
                pixelRGB=imagenes[k].pixelColor(i,j);
                R = pixelRGB.red();
                G = pixelRGB.green();
                B = pixelRGB.blue();
                if(ui->Tresched_chBox->isChecked()){
                    if(R < ui->RedSlider->value()){
                        R=0;
                    }
                    if(G < ui->GreenSlider->value()){
                        G=0;
                    }
                    if(B < ui->BlueSlider->value()){
                        B=0;
                    }
                }
                if(ui->Tresched_chBox->isChecked()==false){
                    if(R > ui->RedSlider->value()){
                        R=0;
                    }
                    if(G > ui->GreenSlider->value()){
                        G=0;
                    }
                    if(B > ui->BlueSlider->value()){
                        B=0;
                    }
                }
                //printf("(%i,%i,%i)",R,G,B);
                imagenes[k+4].setPixelColor(i,j,QColor(R,G,B,0));
            }
        }
    }
    emit filtrar1(4);
    emit filtrar2(5);
    emit filtrar3(6);
}

//////////////////////////////////////////////////////////////
void MainWindow::ponderar(){
    if((imagenes[1].isNull() == false) and (imagenes[2].isNull() == false)){
        imagenes[3] = imagenes[2];
        float ponderacion = (float) ui->Fusion->value();
        QColor pixelRGB1,pixelRGB2;
        int R1,G1,B1,R2,G2,B2,R3,G3,B3;
        int alfa1,alfa2,alfa3;
        for(int i=0;i<imagenes[1].height();i++){
            for(int j=0;j<imagenes[1].width();j++){
                pixelRGB1=imagenes[1].pixelColor(i,j);
                R1 = pixelRGB1.red();
                G1 = pixelRGB1.green();
                B1 = pixelRGB1.blue();
                alfa1 = pixelRGB1.alpha();
                pixelRGB2=imagenes[2].pixelColor(i,j);
                R2 = pixelRGB2.red();
                G2 = pixelRGB2.green();
                B2 = pixelRGB2.blue();
                alfa2 = pixelRGB2.alpha();
                R3=(R1*ponderacion/100.0 + R2*(100.0-ponderacion)/100.0);
                G3=(G1*ponderacion/100.0 + G2*(100.0-ponderacion)/100.0);
                B3=(B1*ponderacion/100.0 + B2*(100.0-ponderacion)/100.0);
                alfa3=(alfa1*ponderacion/100.0 + alfa2*(100.0-ponderacion)/100.0);
                //printf("(%i,%i,%i)",R3,G3,B3);
                imagenes[3].setPixelColor(i,j,QColor(R3,G3,B3,alfa3));
            }
        }
    emit imagenLista(3);
    }
}
//////////////////////////////////////////////////////////////
void MainWindow::colorPlano(){
        imagenes[7] = QImage(175,175,QImage::Format_RGB32);
        int R,G,B;
        R = ui->RedSlider->value();
        G = ui->GreenSlider->value();
        B = ui->BlueSlider->value();
        for(int i=0;i<imagenes[7].height();i++){
            for(int j=0;j<imagenes[7].width();j++){
                imagenes[7].setPixelColor(i,j,QColor(R,G,B));
            }
        }
        emit cambiocolor();
        emit imagenLista(7);
}
//////////////////////////////////////////////////////////////
MainWindow::~MainWindow(){
    delete ui;
}
/////////////////////////////////////////////

The rest of the code is on the link on the top of this question. Thank you for helping me, I'm new to Ubuntu, qt and C++ and I want to improve, but it's quite frustrating when every solution generates another error.

Jason Aller
  • 3,541
  • 28
  • 38
  • 38
J Pablo F
  • 31
  • 3
  • Are you including the correct headers for each of those functions? – Savithru Dec 09 '18 at 17:32
  • Unless you code perfectly, get used to the errors. Consider the errors as a challenge and a way to perfect your [Personal Software Process](https://resources.sei.cmu.edu/library/asset-view.cfm?assetid=5283) – Thomas Matthews Dec 09 '18 at 17:32
  • 3
    It may be becuase you have `using namespace std;` before `#include `. Get rid of `using namespace std;` and try again (you don't use anything from `std` namespace in the code you present). – Yksisarvinen Dec 09 '18 at 17:33
  • Exit Qt Creator, delete its configuration (see [this question](https://stackoverflow.com/q/6742663/1329652)), restart Qt Creator, create a new console project into which you'll add `#include ` and in next line `int main() {}`. It is imperative that you perform all those steps exactly. Let us know what happens next. – Kuba hasn't forgotten Monica Dec 10 '18 at 18:05
  • Please provide some of the errors. It is hard to fix something which we do not see – max630 Dec 10 '18 at 22:45
  • Including a standard file after using namespace seems always wrong to me, so you should test after that and check what are the errors again – max630 Dec 10 '18 at 22:47
  • In the files which you have posted there are no usage of std namespace. It may mean you have some configuration issues. Start with a simplest helloworld Qt application. Does it compile, what are the errors? – max630 Dec 10 '18 at 22:50
  • Generally, "using namespace" should not be used in headers at all – max630 Dec 10 '18 at 22:57

1 Answers1

0

It seems that your source folder contains obsolete build products from another system. Modern Qt Creator never puts those output files inside of the source folders. Close Qt Creator, then remove all files other than the below:

  • Ayudantia2.pro
  • main.cpp
  • mainwindow.cpp
  • mainwindow.h
  • mainwindow.ui
  • marge.jpeg
  • pdi.jpeg

The files above must be the only files left in the source folder. Make sure you don't miss the hidden files, specifically remove:

  • .qmake.stash remove

Then open Qt Creator, open the project, configure it for the current Qt version, and attempt building again.

Kuba hasn't forgotten Monica
  • 95,931
  • 16
  • 151
  • 313
  • Thanks for the answer. Unfortunately it didn't worked :c – J Pablo F Dec 10 '18 at 04:56
  • What didn't work? If it "didn't work", then that means that you can't build anything on your system at all, most likely. Try some simple hello world, like `#include `, and in the second line `int main() { qDebug() << "Hello, world!"; }`. Make a new project, stick those two lines in `main.cpp`, build and report back. – Kuba hasn't forgotten Monica Dec 10 '18 at 12:55
  • #include int main() { qDebug() << "Hello, world!"; } Gives me the exact same image, It will be clearer on the top of the main question. Thank tho, this will discard many other posible errors – J Pablo F Dec 10 '18 at 15:03