We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello: I'm coding in C++ for ARM for the first time, using Keil. I'm working in a project that already exists but I need to make some changes. I cannot change the libraries or the file's structure. The test_1 and test_2 functions use a global object and I cannot change it. Problem is, the code was created to run each test in an independent compilation, but now I need to create a menu for all the tests in a single project.
I'm having problems with the use of a global object. I want to instantiate one object in a .cpp file and use it in another .cpp file (using extern), but linker keep sayng that the object was multiple defined.
Any idea how to solve it?
Thanks.
---My project:
Library File:
// myclass.h: class myclass{ ....
Header for tests 1
// test_1.h #ifndef TST1_H #define TST1_H void test_1(void); extern myclass mc(0); // extern declaration #endif
Tests file 1
//test_1.cpp #include "my_lib.h" #include "test_1.h" myclass mc(0); void test_1(void){ mc.func1(); mc.func2(); ... }
Header for tests 2
// test_2.h #ifndef TST2_H #define TST2_H void test_2(void); extern myclass mc(0); #endif
Tests file 2
//test_2.cpp #include "my_lib.h" #include "test_2.h" void test_2(void){ mc.func1(); mc.func2(); ... }
Main cpp file
// main.cpp #include "my_lib.h" #include "test_1.h" #include "test_2.h" void main(void){ // menu for tests... ... case 1: test_1(); break; case 2: test_2(); break; }
Hello Robert: That was the problem! I reviwed the code and instead of
extern myclass mc;
I was using
extern myclass mc();
. I was confusing object with function. Thank you very much for your help.
Regards Rods