• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 339
  • Last Modified:

Errors when moving from VC5.0 to VC6.0...

Hi,

I have a many code modules, which use a their own makefiles with inter-dependencies to build a few libs/dlls etc. This used to work fine with VC5.0. But now I would like it to build under VC6.0. During the build under 6.0 SP3, the following errors are generated from most of the .cpp files:

c:\vc98\vc98\mfc\include\afxdlgs.inl (104) : error C2065: 'PSH_WIZARD97' : undeclared identifier

c:\vc98\vc98\mfc\include\afxext.h (526) : error C2065: 'RBBS_GRIPPERALWAYS' : undeclared identifier

Any idea why it's displaying these error and failing the build? WHat should I do to make it build under VC6.0 successfully?

Thanks in advance!
0
baigmz
Asked:
baigmz
  • 5
  • 2
1 Solution
 
mikeblasCommented:
The system headers changed between VC5 and VC6. In the VC6 versions, many symbols are protected by conditional directives to help avoid compatibility problems.

Before including any headers (for example, at the top of your STDAFX.H), you need to indicate that you want to use the newest IE-based features. That'll get you the symbols you're missing. Just throw this define:

#define _WIN32_IE 0x0400

and you'll be all set.  If it doesn't work, you've done it wrong.

..B ekiM


0
 
baigmzAuthor Commented:
Thanks for your response.
I have a few questions based on your answer:

Do I need to use the directive you've indicated even if my code doesn't involve any kind of IE functionality?

About 80% of my code is raw C++ and C with rest of it being MFC. Is there any side effect to this change (eg. increase in binary file size, end-user requirements etc.)?

Thanks again.
0
 
baigmzAuthor Commented:
Thanks for your response.
I have a few questions based on your answer:

Do I need to use the directive you've indicated even if my code doesn't involve any kind of IE functionality?

About 80% of my code is raw C++ and C with rest of it being MFC. Is there any side effect to this change (eg. increase in binary file size, end-user requirements etc.)?

Thanks again.
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
baigmzAuthor Commented:
One more question:

I tried out the _WIN32_IE macro.
I get back a warning during the build, which says:

..\stdafx.h(6) : warning C4005: '_WIN32_IE' : macro redefinition

Is this warning ignorable or is it recommended to include it's definition file (.h)?
0
 
baigmzAuthor Commented:
One more question:

I tried out the _WIN32_IE macro.
I get back a warning during the build, which says:

..\stdafx.h(6) : warning C4005: '_WIN32_IE' : macro redefinition

Is this warning ignorable or is it recommended to include it's definition file (.h)?
0
 
baigmzAuthor Commented:
One more question:

I tried out the _WIN32_IE macro.
I get back a warning during the build, which says:

..\stdafx.h(6) : warning C4005: '_WIN32_IE' : macro redefinition

Is this warning ignorable or is it recommended to include it's definition file (.h)?
0
 
mikeblasCommented:
> ..\stdafx.h(6) : warning C4005: '_WIN32_IE' : macro redefinition

 > Is this warning ignorable or is it recommended to include it's  > definition file (.h)?

That probably means you didn't follow my instructions. You should put this definition ahead of any other #include directives.  It's got to be nearly the first thing the compiler sees.  Either you're including other stuff before you include STDAFX.H, or you've got a /D option on the compiler command line that's setting the same symbol.

 > Do I need to use the directive you've indicated even if
 > my code doesn't involve any kind of IE functionality?

But, it does!  The symbols you're using are offered by system DLLs updated when current versions of IE are installed.

 > , end-user requirements etc.)?

Since you're already using those styles, you had those requirements before adding this explicit declaration.

..B ekiM
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 5
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now