| Thread overview | |||||||||
|---|---|---|---|---|---|---|---|---|---|
|
June 17, 2003 Previous definition different errror | ||||
|---|---|---|---|---|
| ||||
I have a header file for my wxhatch application, which contains a collection of lines like this
const wxString space = wxT(' ');
which are used in several code .cpp files.
On linking the files I get errors
Error 1: Previous Definition Different : ?space@@3VwxString@@B (const
wxString space)
My compile and link lines are
dmc -c -o -mn -W -H -D__NT__ -DWIN32 -D__WIN32__ -D__WIN95__ -D__WINDOWS__ -
D__W
XMSW__ -D__SC__ -D__WXDEBUG__ -I..\..\wxWindows\include -I..\..\wxWindows\l
ib\_
sc -I..\..\wxWindows\contrib\include -I..\..\wxWindows/src/regex;..\..\wxWin
dows
/src/png;..\..\wxWindows/src/jpeg;..\..\wxWindows/src/zlib;..\..\wxWindows/s
rc/t
iff wxhatch.cpp -owxhatch.obj
.... more lines all the same
link /DELEXECUTABLE /RC -L/exet:nt/su:windows wxhatch.obj wxhcombo.obj
bitmenu.
obj mcanvas.obj mytext.obj tchild.obj trchild.obj lchild.obj mchild.obj
raddlg.o
bj textdlg.obj startdlg.obj srdlg.obj mnudlg.obj cfgdlg.obj tooldlg.obj
mcdlg.ob
j , wxhatch.exe, wxhatch, ..\..\wxWindows\lib\ wx_sc.lib
..\..\wxWindows\lib\stc
_sc.lib png_sc tiff_sc jpeg_sc zlib_sc shell32_sc wsock32_sc advapi32
comctl32 c
omdlg32 ctl3d32 gc gdi32 kernel32 ole32 oleaut32 snn user32 uuid
OPTLINK (R) for Win32 Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved
bitmenu.obj(bitmenu) Offset 000B1H Record Type 0091
Error 1: Previous Definition Different : ?wxH_VersionString@@3VwxString@@B
(con
st wxString wxH_VersionString)
thanks
chris
| ||||
June 17, 2003 Re: Previous definition different errror | ||||
|---|---|---|---|---|
| ||||
Posted in reply to chris elliott | "chris elliott" <biol75@york.ac.uk> wrote in message news:bcmojg$q29$1@digitaldaemon.com... > I have a header file for my wxhatch application, which contains a collection > of lines like this > > const wxString space = wxT(' '); > > which are used in several code .cpp files. > > On linking the files I get errors > > Error 1: Previous Definition Different : ?space@@3VwxString@@B (const > wxString space) Move the line in the header to a .cpp file. Replace the line in the header with: extern const wxString space; | |||
June 17, 2003 Re: Previous definition different errror | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Walter | "Walter" <walter@digitalmars.com> wrote in message news:bcnd45$1cs2$1@digitaldaemon.com... > > "chris elliott" <biol75@york.ac.uk> wrote in message news:bcmojg$q29$1@digitaldaemon.com... > > I have a header file for my wxhatch application, which contains a > collection > > of lines like this > > > > const wxString space = wxT(' '); > > > > which are used in several code .cpp files. > > > > On linking the files I get errors > > > > Error 1: Previous Definition Different : ?space@@3VwxString@@B (const > > wxString space) > > Move the line in the header to a .cpp file. Replace the line in the header with: > > extern const wxString space; > > That worked fine, So is this a bug in DM or a "feature" of the other compilers? chris | |||
June 17, 2003 Re: Previous definition different errror | ||||
|---|---|---|---|---|
| ||||
Posted in reply to chris elliott | It's more of a 'feature' of other compilers. In essence by *defining* the constant in the header file you *define* it multiple times as the header is included in multiple objects, (as in files, not in OO instances.) Strictly speaking this is not allowed by the standard, (at least afaik,) and what you should do instead, (as Walter suggested,) is *declare* the constant in the header file, but *define* it in a source file so that it is included in only one object. Some compilers simply silently ignore multiple definitions and drop all the definitions that come after the first one. But that is of course a non-standard approach and it is ill advised to rely on this if you want your code to be portable. btw, Walter, why does the compiler report that the previous definition is different? Shouldn't it report that it is a multiple definition since the definitions are actually the same? Hope I got all my terms ans stuff right ;) Regards, Remko van der Vossen. "chris elliott" <chris@ampleforth.u-net.com> wrote in message news:bcnl2i$1kl8$1@digitaldaemon.com... > > "Walter" <walter@digitalmars.com> wrote in message news:bcnd45$1cs2$1@digitaldaemon.com... > > > > "chris elliott" <biol75@york.ac.uk> wrote in message news:bcmojg$q29$1@digitaldaemon.com... > > > I have a header file for my wxhatch application, which contains a > > collection > > > of lines like this > > > > > > const wxString space = wxT(' '); > > > > > > which are used in several code .cpp files. > > > > > > On linking the files I get errors > > > > > > Error 1: Previous Definition Different : ?space@@3VwxString@@B (const > > > wxString space) > > > > Move the line in the header to a .cpp file. Replace the line in the header > > with: > > > > extern const wxString space; > > > > > That worked fine, > So is this a bug in DM or a "feature" of the other compilers? > chris > > | |||
June 17, 2003 Re: Previous definition different errror | ||||
|---|---|---|---|---|
| ||||
Posted in reply to chris elliott | "chris elliott" <chris@ampleforth.u-net.com> wrote in message news:bcnl2i$1kl8$1@digitaldaemon.com... > That worked fine, > So is this a bug in DM or a "feature" of the other compilers? The way DM works is the way the language is defined to work. You might be seeing an extension done by other compilers. | |||
June 17, 2003 Re: Previous definition different errror | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Wichetael | "Wichetael" <wichetael@gmx.net> wrote in message news:bcnn06$1mat$1@digitaldaemon.com... > btw, Walter, why does the compiler report that the previous definition is different? Shouldn't it report that it is a multiple definition since the definitions are actually the same? Yes, that would be better. | |||
June 17, 2003 Re: Previous definition different errror | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Walter | yes, I would live with it if it said the definitons were the same.... Different definitons made me think it was a linker bug chris "Walter" <walter@digitalmars.com> wrote in message news:bcnpjg$1p52$2@digitaldaemon.com... > > "Wichetael" <wichetael@gmx.net> wrote in message news:bcnn06$1mat$1@digitaldaemon.com... > > btw, Walter, why does the compiler report that the previous definition is > > different? Shouldn't it report that it is a multiple definition since the > > definitions are actually the same? > > Yes, that would be better. > > | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply