variables & method naming conflicts

J

Joseph

Hi Gurus,
I got a problem, I am trying to port a win32 prog to Linux. It was all
one big program.cpp and I have to split the functions into separate
init_pxi6052e.cpp,func1.cpp and func2.cpp in order to compile them
separately and debug them. In both cpp file I have to include a common
header file lets call it here as "datatype.h" which is included in both
"init_pxi6052e.cpp" and "test_init_boards.cpp". Both these object
compiles ok. SEe here
%g++ -c test_init_boards.cpp
%g++ -c init_pxi6052e.cpp
However it screws up where I try to link them together to an
executable.

%g++ -o test_init_boards test_init_boards.o init_pxi6052e.o
callback_everyn.o -lnidaqmx


init_pxi6052e.o(.bss+0x20): multiple definition of `InputDataBuffer'
test_init_boards.o(.bss+0x20): first defined here
init_pxi6052e.o(.bss+0x24): multiple definition of `OutputDataBuffer'
test_init_boards.o(.bss+0x24): first defined here
init_pxi6052e.o(.bss+0x40): multiple definition of `msg'
test_init_boards.o(.bss+0x40): first defined here
.... [many lines more here]

I am mixing some C header files in the "datatype.h" files. What is the
best ways to handle this? Please help!
 
R

Rolf Magnus

Joseph said:
Hi Gurus,
I got a problem, I am trying to port a win32 prog to Linux. It was all
one big program.cpp and I have to split the functions into separate
init_pxi6052e.cpp,func1.cpp and func2.cpp in order to compile them
separately and debug them. In both cpp file I have to include a common
header file lets call it here as "datatype.h" which is included in both
"init_pxi6052e.cpp" and "test_init_boards.cpp". Both these object
compiles ok. SEe here
%g++ -c test_init_boards.cpp
%g++ -c init_pxi6052e.cpp
However it screws up where I try to link them together to an
executable.

%g++ -o test_init_boards test_init_boards.o init_pxi6052e.o
callback_everyn.o -lnidaqmx


init_pxi6052e.o(.bss+0x20): multiple definition of `InputDataBuffer'
test_init_boards.o(.bss+0x20): first defined here
init_pxi6052e.o(.bss+0x24): multiple definition of `OutputDataBuffer'
test_init_boards.o(.bss+0x24): first defined here
init_pxi6052e.o(.bss+0x40): multiple definition of `msg'
test_init_boards.o(.bss+0x40): first defined here
... [many lines more here]

I am mixing some C header files in the "datatype.h" files. What is the
best ways to handle this? Please help!

What are InputDataBuffer, OutputDataBuffer and msg? Are they types? Global
variables? Where are they defined? In the cpp files or in the header? Where
is their declaration?
 
J

JE

Joseph wrote:
I have to include a common
header file lets call it here as "datatype.h" which is included in both
"init_pxi6052e.cpp" and "test_init_boards.cpp".
multiple definition of
<snip whatever>

Maybe you've got globals that violate the "One Definition Rule" in
header(s)? Make sure you've got extern whatever in the header (_not_
initialized, because that would be a definition) for your declaration,
and _one_ definition in one of your .cpp files...

JE
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top