Question
Multiple Definitions Errors
I am getting compiling errors when trying to include a custom class into a TouchGFX project.
I made a class called "test" with it's test.h and test.cpp components.
//File: test.h
#pragma once
class test
{
public:
test();
~test();
void set_testX(int);
int get_testX();
protected:
int testX;
};
#include "test.cpp"//File: test.cpp
#include "test.h"
test::test()
{
testX = 0;
}
test::~test()
{
}
void test::set_testX(int x)
{
testX = x;
}
int test::get_testX()
{
return testX;
}When I include test.h into mainScreenView.cpp (generated from TouchTFX) the code compiles fine.
However, I want test.h to be included into mainScreenView.hpp... When I attempt this, I get multiple definition erorrs, and I have no idea how to fix this....:sad_but_relieved_face:
//File: mainScreenView.cpp
//This code compiles fine when the test.h include is not commented out
#include <gui/mainscreen_screen/mainScreenView.hpp>
#include <gui_generated/mainscreen_screen/mainScreenViewBase.hpp>
#include "BitmapDatabase.hpp"
#include <texts/TextKeysAndLanguages.hpp>
#include <touchgfx/Color.hpp>
//#include <../../simulator/msvs/test.h> //commented out to include in the .hpp
using namespace std;
mainScreenView::mainScreenView()
{
}
void mainScreenView::setupScreen()
{
mainScreenViewBase::setupScreen();
}
void mainScreenView::tearDownScreen()
{
mainScreenViewBase::tearDownScreen();
}
void mainScreenView::set_test_X()
{
int x = testx.get_testX();
//Unicode::UnicodeChar y[10] = new UnicodeChar;
Unicode::snprintf(textArea1_1Buffer, TEXTAREA1_1_SIZE, "hello %i", x);
textArea1_1.setWildcard(textArea1_1Buffer);
textArea1_1.invalidate();
}//File: mainScreenView.hpp
//This code runs into Mulitple definition errors....
#ifndef MAINSCREENVIEW_HPP
#define MAINSCREENVIEW_HPP
#include <gui_generated/mainscreen_screen/mainScreenViewBase.hpp>
#include <gui/mainscreen_screen/mainScreenPresenter.hpp>
#include <gui/introscreen_screen/introScreenPresenter.hpp>
#include <../../simulator/msvs/test.h> //trying to include test.h
class mainScreenView : public mainScreenViewBase
{
public:
mainScreenView();
virtual ~mainScreenView() {}
virtual void setupScreen();
virtual void tearDownScreen();
virtual void set_test_X();
virtual void setTestXValue();
protected:
test testx;
};
#endif // MAINSCREENVIEW_HPPSmall section of the error:
Compile
make -f ../gcc/Makefile -j8
Converting images
Compiling TouchGFX/gui/src/mainscreen_screen/mainScreenView.cpp
Compiling TouchGFX/gui/src/mainscreen_screen/mainScreenPresenter.cpp
Compiling TouchGFX/generated/gui_generated/src/common/FrontendApplicationBase.cpp
Compiling TouchGFX/target/BoardConfiguration.cpp
Linking TouchGFX/build/bin/target.elf
TouchGFX/build/ST/STM32F769I-DISCO/TouchGFX/gui/src/mainscreen_screen/mainScreenPresenter.o: In function `test::test()':
c:\TouchGFXProjects\MyApplication_7/TouchGFX/gui/include/../../simulator/msvs/test.cpp:5: multiple definition of `test::test()'
TouchGFX/build/ST/STM32F769I-DISCO/TouchGFX/gui/src/mainscreen_screen/mainScreenView.o:c:\TouchGFXProjects\MyApplication_7/TouchGFX/gui/include/../../simulator/msvs/test.cpp:5: first defined here
TouchGFX/build/ST/STM32F769I-DISCO/TouchGFX/gui/src/mainscreen_screen/mainScreenPresenter.o: In function `mainScreenPresenter::~mainScreenPresenter()':
c:\TouchGFXProjects\MyApplication_7/TouchGFX/gui/include/gui/mainscreen_screen/mainScreenPresenter.hpp:28: multiple definition of `test::test()'
TouchGFX/build/ST/STM32F769I-DISCO/TouchGFX/gui/src/mainscreen_screen/mainScreenView.o:c:\TouchGFXProjects\MyApplication_7/Middlewares/ST/TouchGFX/touchgfx/framework/include/touchgfx/Screen.hpp:213: first defined here
TouchGFX/build/ST/STM32F769I-DISCO/TouchGFX/gui/src/mainscreen_screen/mainScreenPresenter.o: In function `mainScreenPresenter::~mainScreenPresenter()':
c:\TouchGFXProjects\MyApplication_7/TouchGFX/gui/include/gui/mainscreen_screen/mainScreenPresenter.hpp:28: multiple definition of `test::~test()'
TouchGFX/build/ST/STM32F769I-DISCO/TouchGFX/gui/src/mainscreen_screen/mainScreenView.o:c:\TouchGFXProjects\MyApplication_7/Middlewares/ST/TouchGFX/touchgfx/framework/include/touchgfx/Screen.hpp:213: first defined here
TouchGFX/build/ST/STM32F769I-DISCO/TouchGFX/gui/src/mainscreen_screen/mainScreenPresenter.o: In function `mainScreenPresenter::~mainScreenPresenter()':
c:\TouchGFXProjects\MyApplication_7/TouchGFX/gui/include/gui/mainscreen_screen/mainScreenPresenter.hpp:28: multiple definition of `test::~test()'
TouchGFX/build/ST/STM32F769I-DISCO/TouchGFX/gui/src/mainscreen_screen/mainScreenView.o:c:\TouchGFXProjects\MyApplication_7/Middlewares/ST/TouchGFX/touchgfx/framework/include/touchgfx/Screen.hpp:213: first defined here
TouchGFX/build/ST/STM32F769I-DISCO/TouchGFX/gui/src/mainscreen_screen/mainScreenPresenter.o: In function `mainScreenPresenter::~mainScreenPresenter()':
c:\TouchGFXProjects\MyApplication_7/TouchGFX/gui/include/gui/mainscreen_screen/mainScreenPresenter.hpp:28: multiple definition of `test::set_testX(int)'
TouchGFX/build/ST/STM32F769I-DISCO/TouchGFX/gui/src/mainscreen_screen/mainScreenView.o:c:\TouchGFXProjects\MyApplication_7/Middlewares/ST/TouchGFX/touchgfx/framework/include/touchgfx/Screen.hpp:213: first defined here
TouchGFX/build/ST/STM32F769I-DISCO/TouchGFX/gui/src/mainscreen_screen/mainScreenPresenter.o: In function `mainScreenPresenter::~mainScreenPresenter()':
c:\TouchGFXProjects\MyApplication_7/TouchGFX/gui/include/gui/mainscreen_screen/mainScreenPresenter.hpp:28: multiple definition of `test::get_testX()'Any advice?
Thanks.
