Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Upgrading an old VC application

Upgrading an old VC application

Scheduled Pinned Locked Moved The Lounge
c++csharptoolsquestiondiscussion
27 Posts 14 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Jorgen Andersson

    Dan Neely wrote:

    it's enough of a Codethulu-elephant that by the end of porting something from then I'd probably be able to drink Nagy under the table

    Ever wondered what project Nagy encountered?

    Wrong is evil and must be defeated. - Jeff Ello[^]

    D Offline
    D Offline
    Dan Neely
    wrote on last edited by
    #11

    Now isn't that a scary thought. :laugh:

    Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

    1 Reply Last reply
    0
    • D Dan Neely

      Dave Calkins wrote:

      Make sure you install MFC when setting up studio (I noticed in VS2013 that was an option during install)

      Looks like I'm good here. I fired up VS2012, picked MFC app from the new project dialog and got a working hello MFC app when I clicked the run button.

      Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

      D Offline
      D Offline
      Dave Calkins
      wrote on last edited by
      #12

      so then you should be able to open the solution file in VS2012 (or since its an older project maybe the workspace file or whatever it was called then) and let it upgrade it. you might then just be able to build and run.

      1 Reply Last reply
      0
      • D Dan Neely

        This is very preliminary information gathering at present; but I've found out I may be tasked with upgrading an elderly windows app, currently running on NT4 and untouched in a decade, to work with modern versions of Windows. So far the discussion's only been at the upper management level; but from the dates involved (and knowing that IIRC our .net app from 05 was the customers first) we're assuming it was written in Visual C++/MFC; a platform I dabbled with in school but never used for anything real. Since MS no longer offers anything prior to VS2002 via MSDN I'm wondering how much pain I'm likely to be in for in just getting it to compile under newer tools. PS I'm really hoping it's not so old as to be a win16 app. I've never written win16 code; but from what I've read on The Old New Thing, it's enough of a Codethulu-elephant that by the end of porting something from then I'd probably be able to drink Nagy under the table. :omg:

        Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

        R Offline
        R Offline
        Ravi Bhavnani
        wrote on last edited by
        #13

        One thing that's prevented me from using anything more modern than VC6 for this[^] app is my reliance on CString, whose size increased over the years.  Rather than fight this, I decided to convert the app to .NET in its next incarnation. Also see this[^] MSDN link for additional data points. /ravi

        My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

        M 1 Reply Last reply
        0
        • D Dan Neely

          This is very preliminary information gathering at present; but I've found out I may be tasked with upgrading an elderly windows app, currently running on NT4 and untouched in a decade, to work with modern versions of Windows. So far the discussion's only been at the upper management level; but from the dates involved (and knowing that IIRC our .net app from 05 was the customers first) we're assuming it was written in Visual C++/MFC; a platform I dabbled with in school but never used for anything real. Since MS no longer offers anything prior to VS2002 via MSDN I'm wondering how much pain I'm likely to be in for in just getting it to compile under newer tools. PS I'm really hoping it's not so old as to be a win16 app. I've never written win16 code; but from what I've read on The Old New Thing, it's enough of a Codethulu-elephant that by the end of porting something from then I'd probably be able to drink Nagy under the table. :omg:

          Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

          J Offline
          J Offline
          Joe Woodbury
          wrote on last edited by
          #14

          I've converted several apps from earlier version of Visual Studio to the latest, including a 16-bit app. Quite often, I've solved several bugs along the way due to improved error checking by the compiler. It isn't that difficult and requires patience and being methodical. (I found it easier to concentrate on one file at a time. Once I get it working with Warning Level 3, I go to Warning Level 4 and apply a set of additions and exceptions I've found work really well.)

          1 Reply Last reply
          0
          • L Lost User

            Dan Neely wrote:

            I suspect work related NDAs would scuttle any hope of a useful article...

            Yeah, I'm in the same boat. :sigh:

            Government is not reason; it is not eloquent; it is force. Like fire, it is a dangerous servant and a fearful master. ~ George Washington

            B Offline
            B Offline
            BobJanova
            wrote on last edited by
            #15

            Mm, I've got some interesting things to say as well and can only do really high level articles (though there might be one of those in the pipeline).

            1 Reply Last reply
            0
            • D Dan Neely

              This is very preliminary information gathering at present; but I've found out I may be tasked with upgrading an elderly windows app, currently running on NT4 and untouched in a decade, to work with modern versions of Windows. So far the discussion's only been at the upper management level; but from the dates involved (and knowing that IIRC our .net app from 05 was the customers first) we're assuming it was written in Visual C++/MFC; a platform I dabbled with in school but never used for anything real. Since MS no longer offers anything prior to VS2002 via MSDN I'm wondering how much pain I'm likely to be in for in just getting it to compile under newer tools. PS I'm really hoping it's not so old as to be a win16 app. I've never written win16 code; but from what I've read on The Old New Thing, it's enough of a Codethulu-elephant that by the end of porting something from then I'd probably be able to drink Nagy under the table. :omg:

              Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

              S Offline
              S Offline
              Stuart Dootson
              wrote on last edited by
              #16

              You're likely to find some issues because you're moving from pre-98 Standard C++ to C++ 11(ish) if you're going to migrate to VS2013... I started developing a project with VC6 back in 2001/2 that I've maintained ever since. It moved to VS2003 in 2005, VS2008 in 2010, VS2010 in 2012 and to VS2013 in the last month. I had the most problems moving from VC6 to VS2003, but after that, VS2010 to VS2013 had the most issues, all due to improved C++ standards compliance. Oh - and some deprecated Platform SDK / C runtime functions - but those deprecation warnings can be turned off with macros (or you can modify your code to conform with the warnings, of course). However...take a copy of the project. Open it in VS2013. Rebuild. Fix compile errors. Rinse & repeat... Just do it, I suspect it'll be easier than you might think.

              Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p CodeProject MVP for 2010 - who'd'a thunk it!

              D 1 Reply Last reply
              0
              • D Dan Neely

                This is very preliminary information gathering at present; but I've found out I may be tasked with upgrading an elderly windows app, currently running on NT4 and untouched in a decade, to work with modern versions of Windows. So far the discussion's only been at the upper management level; but from the dates involved (and knowing that IIRC our .net app from 05 was the customers first) we're assuming it was written in Visual C++/MFC; a platform I dabbled with in school but never used for anything real. Since MS no longer offers anything prior to VS2002 via MSDN I'm wondering how much pain I'm likely to be in for in just getting it to compile under newer tools. PS I'm really hoping it's not so old as to be a win16 app. I've never written win16 code; but from what I've read on The Old New Thing, it's enough of a Codethulu-elephant that by the end of porting something from then I'd probably be able to drink Nagy under the table. :omg:

                Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

                B Offline
                B Offline
                basementman
                wrote on last edited by
                #17

                You probably will need to add _CRT_SECURE_NO_WARNINGS;_CRT_NON_CONFORMING_SWPRINTFS; to your preprocessor defs to get it to compile without warnings.

                onwards and upwards...

                D 1 Reply Last reply
                0
                • S Stuart Dootson

                  You're likely to find some issues because you're moving from pre-98 Standard C++ to C++ 11(ish) if you're going to migrate to VS2013... I started developing a project with VC6 back in 2001/2 that I've maintained ever since. It moved to VS2003 in 2005, VS2008 in 2010, VS2010 in 2012 and to VS2013 in the last month. I had the most problems moving from VC6 to VS2003, but after that, VS2010 to VS2013 had the most issues, all due to improved C++ standards compliance. Oh - and some deprecated Platform SDK / C runtime functions - but those deprecation warnings can be turned off with macros (or you can modify your code to conform with the warnings, of course). However...take a copy of the project. Open it in VS2013. Rebuild. Fix compile errors. Rinse & repeat... Just do it, I suspect it'll be easier than you might think.

                  Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p CodeProject MVP for 2010 - who'd'a thunk it!

                  D Offline
                  D Offline
                  Dan Neely
                  wrote on last edited by
                  #18

                  Jump directly to the latest? I was thinking in terms of walking up my collection of installed versions of VS incrementally upgrading as I go: 03, 08, 10; newer'd depend on either customer requests or getting past team mates balking at 12 as a 1.0 version and not wanting to install 13 because without a need for it keeping R#er while avoiding a fight with bean counters (not relevant for C++) and just not wanting to install another version that will then become part of the stack we need to keep installed forever more due to legacy apps we're on call for but otherwise have no update budget/mandate (this one really bugs me too). :sigh: Edit: A big part of why I'm thinking incrementally is that, assuming it's a VC6 (or prior) project and that none of my packratty coworkers have an MSDN cd with that version on it, initially targetting 2003 would be the quickest path to a working build.

                  Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

                  P S 2 Replies Last reply
                  0
                  • B basementman

                    You probably will need to add _CRT_SECURE_NO_WARNINGS;_CRT_NON_CONFORMING_SWPRINTFS; to your preprocessor defs to get it to compile without warnings.

                    onwards and upwards...

                    D Offline
                    D Offline
                    Dan Neely
                    wrote on last edited by
                    #19

                    Are those actually fixing anything; or are they just rollups for disabling a bunch of warnings to greenwash the compiler output?

                    Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

                    B 1 Reply Last reply
                    0
                    • D Dan Neely

                      Are those actually fixing anything; or are they just rollups for disabling a bunch of warnings to greenwash the compiler output?

                      Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

                      B Offline
                      B Offline
                      basementman
                      wrote on last edited by
                      #20

                      Disables warnings for "non-secure" functions such as strcpy, strcat, sprintf, etc. that have been "deprecated" due to the MS secure initiative, pushing people to strcat_s that is length validated to help prevent buffer overflows. These didn't exist in VC6.

                      onwards and upwards...

                      D 1 Reply Last reply
                      0
                      • B basementman

                        Disables warnings for "non-secure" functions such as strcpy, strcat, sprintf, etc. that have been "deprecated" due to the MS secure initiative, pushing people to strcat_s that is length validated to help prevent buffer overflows. These didn't exist in VC6.

                        onwards and upwards...

                        D Offline
                        D Offline
                        Dan Neely
                        wrote on last edited by
                        #21

                        Assuming we end up on contract for anything beyond a minimal make it run on w7 update I suspect making those substitutions will be an IA requirement we'll be expected to meet.

                        Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

                        1 Reply Last reply
                        0
                        • D Dan Neely

                          Jump directly to the latest? I was thinking in terms of walking up my collection of installed versions of VS incrementally upgrading as I go: 03, 08, 10; newer'd depend on either customer requests or getting past team mates balking at 12 as a 1.0 version and not wanting to install 13 because without a need for it keeping R#er while avoiding a fight with bean counters (not relevant for C++) and just not wanting to install another version that will then become part of the stack we need to keep installed forever more due to legacy apps we're on call for but otherwise have no update budget/mandate (this one really bugs me too). :sigh: Edit: A big part of why I'm thinking incrementally is that, assuming it's a VC6 (or prior) project and that none of my packratty coworkers have an MSDN cd with that version on it, initially targetting 2003 would be the quickest path to a working build.

                          Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

                          P Offline
                          P Offline
                          patbob
                          wrote on last edited by
                          #22

                          Dan Neely wrote:

                          Jump directly to the latest? I was thinking in terms of walking up my collection of installed versions of VS incrementally upgrading as I go: 03, 08, 10;

                          Each version will introduce its own set of things that needs to be fixed. Having worked on a VC++ project that we took from 6.0 through to 2008 through the years, my gut feel is that your way will create extra work. The source isn't the only thing that needs updating, sometimes the project files do too. The only benefit I can see of doing an incremental upgrade is if you also install the docs and can get some value out of their upgrade guides. Those have had helpful hints like the #define mentioned. I think sometimes the older info gets lost in newer rewrites.

                          We can program with only 1's, but if all you've got are zeros, you've got nothing.

                          1 Reply Last reply
                          0
                          • D Dan Neely

                            Jump directly to the latest? I was thinking in terms of walking up my collection of installed versions of VS incrementally upgrading as I go: 03, 08, 10; newer'd depend on either customer requests or getting past team mates balking at 12 as a 1.0 version and not wanting to install 13 because without a need for it keeping R#er while avoiding a fight with bean counters (not relevant for C++) and just not wanting to install another version that will then become part of the stack we need to keep installed forever more due to legacy apps we're on call for but otherwise have no update budget/mandate (this one really bugs me too). :sigh: Edit: A big part of why I'm thinking incrementally is that, assuming it's a VC6 (or prior) project and that none of my packratty coworkers have an MSDN cd with that version on it, initially targetting 2003 would be the quickest path to a working build.

                            Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

                            S Offline
                            S Offline
                            Stuart Dootson
                            wrote on last edited by
                            #23

                            I'd be tempted to go straight to your ultimate target version (whether that be VS2010, 2012 or 2013) with a **COPY** of the solution. If you find any really difficult problems, then you could try going via intermediate versions in the hope that the errors along the way will be lesser.

                            Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p CodeProject MVP for 2010 - who'd'a thunk it!

                            D 1 Reply Last reply
                            0
                            • S Stuart Dootson

                              I'd be tempted to go straight to your ultimate target version (whether that be VS2010, 2012 or 2013) with a **COPY** of the solution. If you find any really difficult problems, then you could try going via intermediate versions in the hope that the errors along the way will be lesser.

                              Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p CodeProject MVP for 2010 - who'd'a thunk it!

                              D Offline
                              D Offline
                              Dan Neely
                              wrote on last edited by
                              #24

                              Source control means having arbitrarily many copies. :cool:

                              Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

                              1 Reply Last reply
                              0
                              • R Ravi Bhavnani

                                One thing that's prevented me from using anything more modern than VC6 for this[^] app is my reliance on CString, whose size increased over the years.  Rather than fight this, I decided to convert the app to .NET in its next incarnation. Also see this[^] MSDN link for additional data points. /ravi

                                My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

                                M Offline
                                M Offline
                                Member 4608898
                                wrote on last edited by
                                #25

                                If it was passed by reference instead of by value, the code works seamlessly. What I find is a lot of the VC6 code normally pass CStrings by value.

                                R 1 Reply Last reply
                                0
                                • M Member 4608898

                                  If it was passed by reference instead of by value, the code works seamlessly. What I find is a lot of the VC6 code normally pass CStrings by value.

                                  R Offline
                                  R Offline
                                  Ravi Bhavnani
                                  wrote on last edited by
                                  #26

                                  I was referring to serialization of CString breaking between VC6 and VS2005+. /ravi

                                  My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

                                  1 Reply Last reply
                                  0
                                  • D Dan Neely

                                    Mike Mullikin wrote:

                                    If it comes to pass you should consider an article for CP.

                                    I suspect work related NDAs would scuttle any hope of a useful article unless I scoured the internet to find someone elses VC6 legacy project I could use as an example in a writeup. :sigh:

                                    Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

                                    F Offline
                                    F Offline
                                    fatman45
                                    wrote on last edited by
                                    #27

                                    If it's VC6 then it is unlikely that it is a 16-bit app. VC4 on is 32-bit. As pointed out by others, your biggest problem is likely to be 3rd party libs.

                                    Da Bomb

                                    1 Reply Last reply
                                    0
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    • Login

                                    • Don't have an account? Register

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Categories
                                    • Recent
                                    • Tags
                                    • Popular
                                    • World
                                    • Users
                                    • Groups