Post by Russell PotterMy program compiles OK, but ends with the fatal error
"LNK1169: one or more multiply defined symbols found" -
with,however, no indication as to the names of these
symbols.
If true, that must be a major regression in the Microsoft toolchain. I
worked as a Win32 developer for many years, and don't recall having a
problem identifying unresolved symbols.
Thompson and Ritchie working on Unix in 1977 almost certainly made
themselves a linker that told them which symbols were unresolved.
(Well, maybe not; Ritchie liked utilities that print
?
when there is an error, or just return a failed exit status with
no output, just to keep you on your toes.)
Post by Russell PotterWould somebody be able to tell me how I might be able to
go about finding this information?
Suppose I'm given a toolchain which absolutely will not provide this
information, no matter what.
The next thing I would do is look through the header files for places
where instead of writing a declaration, I wrote a definition. For
instance,
// globals.h
extern int g_frobosity_level = 0; // oops: definition!
Or other similar problems, like a missing inline on a function.
In C++, there are some C++ specific ways to cause this sort
of problem.
Then I'd comb through the program modules and find any local
symbols that are not properly static.
I'd also compare the differences between my work and the closest version
of the program that built. If you checked out a building, working
program from version control, and it doesn't build with the changes you
made, then suspect your changes: review what you have in "git diff".