Trying to convert a very old C program to Microsoft Visual Studio 2010. After some warnings, including some extern "C"'s and all that, everyting compiles. However, the linker keeps calling that is misses an external symbol "_VERSION". I have been looking through all code and can't find any reference to it. I included a char * _VERSION somewhere in my main source (within and outside the extern "C") Still complains.
Does anyone have an idea how I could find out where the linker finds the call of this reference? Is there som option that can persuade the linker to provide me with much more information or something like that?
This is getting extremely frustrating, since everything else seems to work as expected. Just this @!$@! _VERSION....
Well, the point is that the software calls some other C modules. I did scan all sources for as far as I can see, but they are not all included in the VS2010 solution so I had to so that by hand. However, I would have expected to at least get rid of the linker's complaint by adding a variable _VERSION in my own source code. Possibly with a wrong type, but then I would expect another complaint from Microsoft somewhere....
I fully agree with you all. Point however is that I need to find-out where my code is using it anbd even more: when I simply introduce a global variable _VERSION, I would no longer expect an "unresolved external" for _VERSION.
Well you do have a point there. The linker complains about a straight _VERSION. As far as I know, it would complain about something including the name mangling normally. It does however mean that - if I introduce a variable named _VERSION - that will probably be called differently internally. I have been looking into a way to remove the name mangling from a particular variable, but have not yet found anything.
the extern C removes name mangling... so there may be some definition that you need to wrap with that somewhere in your source... you just have to find it (on a related note, wish linkers gave better error information, lol)
I didn't realise from the original post that the name _VERSION was the name given by the linker, and is mangled.
The unmangled name is VERSION, so that's what we're looking for here. Also, see my other post.
Can't remember off the top of my head, but I don't think it does... remember that the linker works with the compiler output... so it doesn't necessarily have an association between an unfound object and where it was referenced in source (although it may, this is more of a linker design feature).
and a reference to the variable VERSION somewhere in your final program. However, if this is not anywhere in your source modules it could possibly be in an associated library, so you may need to check what external libraries are being added to your program.
You could also try the /MAP and/or /VERBOSE linker options to see if you can narrow it down to the actual module where it occurs.
The first thing to do is go and read the MSDN documentation for the control you are interested in; that would lead you to this page[^]. Scroll down until you reach the table entry for SS_EDITCONTROL, and you have a potential solution.
If you call Create() directly there's usually options for clipping and/or going to the next line. Usually if you have too long of a line it gets clipped automatically but it should still display something.
Also, make sure you actually have set the hight of the static control correctly, as there is no automatic expansion of its borders, or flow layout using HTML speak, if the text does not fit vertically.
Last Visit: 31-Dec-99 18:00 Last Update: 29-Sep-23 18:13