468,161 Members | 2,115 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,161 developers. It's quick & easy.

Issues with Porting VS6.0 MFC Projects to VS8.0 - Need Help

I am in the midst of porting a massive MFC application from VS6.0 to VS8.0.
While i have fixed most of the compile time errors, i do have quite a linker
error that i have not been able to resolve. The error i get is

Error 100 error LNK2001: unresolved external symbol "public: virtual void
__thiscall CWnd::PostNcDestroy(void)"
(?PostNcDestroy@CWnd@@UAEXXZ) Evenout.obj

I have about 200 of these on almost all the obj's that have a dialog in
them(which is understandable). But i do see that the delcaration of
CWnd::PostNcDestory( ) in the systems afxwin.h header which is public:

// for custom cleanup after WM_NCDESTROY
public:
virtual void PostNcDestroy();

Do i need to refer to any particular version of SDK/ *.lib or am i missing
something. Any help here would be appreciated.
Aug 4 '06 #1
5 2938
"BK-Chicago" <BK*******@discussions.microsoft.comwrote in message
news:89**********************************@microsof t.com...
>I am in the midst of porting a massive MFC application from VS6.0 to VS8.0.
While i have fixed most of the compile time errors, i do have quite a
linker
error that i have not been able to resolve. The error i get is

Error 100 error LNK2001: unresolved external symbol "public: virtual void
__thiscall CWnd::PostNcDestroy(void)"
(?PostNcDestroy@CWnd@@UAEXXZ) Evenout.obj

I have about 200 of these on almost all the obj's that have a dialog in
them(which is understandable). But i do see that the delcaration of
CWnd::PostNcDestory( ) in the systems afxwin.h header which is public:

// for custom cleanup after WM_NCDESTROY
public:
virtual void PostNcDestroy();

Do i need to refer to any particular version of SDK/ *.lib or am i
missing
something. Any help here would be appreciated.
Make sure that you're not still linking against the VC6 version of MFC.
Check the project settings and the Tools|Options|Projects and Solutions|C++
Directories to make sure that the VS2005 directories are the only ones on
the library search path.

-cd
Aug 4 '06 #2
Thank you for looking into this.

This is what i have set in the Tools Option category.

<ToolsOptionsSubCategory name="VCDirectories"
RegisteredName="VCDirectories" PackageName="Visual C++ Project System
Package">
<PropertyValue
name="LibraryDirectories">Win32|$(VCInstallDir)lib ;$(VCInstallDir)atlmfc\lib;$(VCInstallDir)atlmfc\l ib\i386;$(VCInstallDir)PlatformSDK\lib;$(Framework SDKDir)lib;$(VSInstallDir);$(VSInstallDir)lib|x64| $(VCInstallDir)lib\amd64;$(VCInstallDir)atlmfc\lib \amd64;$(VCInstallDir)PlatformSDK\lib\amd64;$(VSIn stallDir)SDK\v2.0\lib\amd64|Pocket
PC 2003
(ARMV4)|$(VSInstallDir)SmartDevices\SDK\PocketPC20 03\lib\ARMV4;$(VCInstallDir)ce\atlmfc\lib\ARMV4;$( VCInstallDir)ce\lib\ARMV4;|Smartphone
2003
(ARMV4)|$(VSInstallDir)SmartDevices\SDK\SmartPhone 2003\lib\ARMV4;$(VCInstallDir)ce\atlmfc\lib\ARMV4; $(VCInstallDir)ce\lib\ARMV4;</PropertyValue>
<PropertyValue
name="ReferenceDirectories">Win32|$(FrameworkDir)$ (FrameworkVersion);$(VCInstallDir)atlmfc\lib|x64|$ (FrameworkDir)$(FrameworkVersion);$(VCInstallDir)a tlmfc\lib\amd64|Pocket PC 2003 (ARMV4)||Smartphone 2003 (ARMV4)|</PropertyValue>
<PropertyValue
name="ExcludeDirectories">Win32|$(VCInstallDir)inc lude;$(VCInstallDir)atlmfc\include;$(VCInstallDir) PlatformSDK\include;$(FrameworkSDKDir)include;$(Fr ameworkDir)$(FrameworkVersion);$(VCInstallDir)atlm fc\lib|x64|$(VCInstallDir)include;$(VCInstallDir)a tlmfc\include;$(VCInstallDir)PlatformSDK\include;$ (FrameworkSDKDir)include;$(FrameworkDir)$(Framewor kVersion);$(VCInstallDir)atlmfc\lib\amd64|Pocket
PC 2003
(ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)S martDevices\SDK\PocketPC2003\include;$(VCInstallDi r)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SD K\SQL
Server\Mobile\v3.0;;|Smartphone 2003
(ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)S martDevices\SDK\SmartPhone2003\include;$(VCInstall Dir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\ SDK\SQL Server\Mobile\v3.0;;</PropertyValue>
<PropertyValue
name="IncludeDirectories">Win32|C:\Development\pro jects\Zipl_src;$(VCInstallDir)include;$(VCInstallD ir)atlmfc\include;$(VCInstallDir)PlatformSDK\inclu de;$(FrameworkSDKDir)include|x64|$(VCInstallDir)in clude;$(VCInstallDir)atlmfc\include;$(VCInstallDir )PlatformSDK\include;$(FrameworkSDKDir)include|Poc ket
PC 2003
(ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)S martDevices\SDK\PocketPC2003\include;$(VCInstallDi r)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SD K\SQL
Server\Mobile\v3.0;|Smartphone 2003
(ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)S martDevices\SDK\SmartPhone2003\include;$(VCInstall Dir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\ SDK\SQL Server\Mobile\v3.0;</PropertyValue>
<PropertyValue
name="SourceDirectories">Win32|$(VCInstallDir)atlm fc\src\mfc;$(VCInstallDir)atlmfc\src\mfcm;$(VCInst allDir)atlmfc\src\atl;$(VCInstallDir)crt\src|x64|$ (VCInstallDir)atlmfc\src\mfc;$(VCInstallDir)atlmfc \src\mfcm;$(VCInstallDir)atlmfc\src\atl;$(VCInstal lDir)crt\src|Pocket
PC 2003
(ARMV4)|$(VCInstallDir)ce\atlmfc\src\atl\;$(VCInst allDir)ce\atlmfc\src\mfc\;$(VCInstallDir)ce\crt\sr c\|Smartphone
2003
(ARMV4)|$(VCInstallDir)ce\atlmfc\src\atl\;$(VCInst allDir)ce\atlmfc\src\mfc\;$(VCInstallDir)ce\crt\sr c\</PropertyValue>
<PropertyValue
name="ExecutableDirectories">Win32|$(VCInstallDir) bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallDir) Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(V SInstallDir)Common7\ide;$(ProgramFiles)\HTML
Help
Workshop;$(FrameworkSDKDir)bin;$(FrameworkDir)$(Fr ameworkVersion);$(VSInstallDir);$(VSInstallDir)\SD K\v2.0\bin;$(SystemRoot)\SysWow64;$(FxCopDir);$(PA TH)|x64|$(VCInstallDir)bin\x86_amd64;$(VCInstallDi r)bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallDi r)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$ (VSInstallDir)Common7\ide;$(ProgramFiles)\HTML
Help
Workshop;$(FrameworkSDKDir)bin;$(FrameworkSDKDir)l ib\win64;$(FrameworkDir)$(FrameworkVersion);$(FxCo pDir);$(PATH)|Pocket
PC 2003
(ARMV4)|$(VCInstallDir)ce\bin\x86_arm;$(VCInstallD ir)bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallD ir)Common7\Tools;$(VSInstallDir)Common7\IDE;$(VSIn stallDir)Common\Tools;$(VSInstallDir)Common\IDE;$( VSInstallDir);$(FrameworkSDKDir)Bin;$(PATH);|Smart phone
2003
(ARMV4)|$(VCInstallDir)ce\bin\x86_arm;$(VCInstallD ir)bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallD ir)Common7\Tools;$(VSInstallDir)Common7\IDE;$(VSIn stallDir)Common\Tools;$(VSInstallDir)Common\IDE;$( VSInstallDir);$(FrameworkSDKDir)Bin;$(PATH);</PropertyValue>
</ToolsOptionsSubCategory>

and i did set an env variable VCInstallDir to the correct path(which i am
hoping would override whatever studio has)

C:\Documents and Settings\User>set VCInstalldir
VCInstallDir=C:\Program Files\Microsoft Visual Studio 8

Am I missing something.

Also want to metion that i do have 2 third party math libraries(*.lib) that
are not built using VS2005. But they do link fine using VS2003 and VS6.00.
Not sure if this should have any effect.

Regards
Bk
"Carl Daniel [VC++ MVP]" wrote:
"BK-Chicago" <BK*******@discussions.microsoft.comwrote in message
news:89**********************************@microsof t.com...
I am in the midst of porting a massive MFC application from VS6.0 to VS8.0.
While i have fixed most of the compile time errors, i do have quite a
linker
error that i have not been able to resolve. The error i get is

Error 100 error LNK2001: unresolved external symbol "public: virtual void
__thiscall CWnd::PostNcDestroy(void)"
(?PostNcDestroy@CWnd@@UAEXXZ) Evenout.obj

I have about 200 of these on almost all the obj's that have a dialog in
them(which is understandable). But i do see that the delcaration of
CWnd::PostNcDestory( ) in the systems afxwin.h header which is public:

// for custom cleanup after WM_NCDESTROY
public:
virtual void PostNcDestroy();

Do i need to refer to any particular version of SDK/ *.lib or am i
missing
something. Any help here would be appreciated.

Make sure that you're not still linking against the VC6 version of MFC.
Check the project settings and the Tools|Options|Projects and Solutions|C++
Directories to make sure that the VS2005 directories are the only ones on
the library search path.

-cd
Aug 4 '06 #3
The issue has been resolved.

The following actions were taken to resolve the issue:
1. VS 2005 was uninstalled
2. Visual Studio .NET2003 was uninstalled
3. VS 2005 was uninstalled
4. A clean rebuild.

Looks like the initial installation order of
VS 6.0
VS 2005
VS.NET2003
throws the env in a form that confuses VS2005.
"BK-Chicago" wrote:
Thank you for looking into this.

This is what i have set in the Tools Option category.

<ToolsOptionsSubCategory name="VCDirectories"
RegisteredName="VCDirectories" PackageName="Visual C++ Project System
Package">
<PropertyValue
name="LibraryDirectories">Win32|$(VCInstallDir)lib ;$(VCInstallDir)atlmfc\lib;$(VCInstallDir)atlmfc\l ib\i386;$(VCInstallDir)PlatformSDK\lib;$(Framework SDKDir)lib;$(VSInstallDir);$(VSInstallDir)lib|x64| $(VCInstallDir)lib\amd64;$(VCInstallDir)atlmfc\lib \amd64;$(VCInstallDir)PlatformSDK\lib\amd64;$(VSIn stallDir)SDK\v2.0\lib\amd64|Pocket
PC 2003
(ARMV4)|$(VSInstallDir)SmartDevices\SDK\PocketPC20 03\lib\ARMV4;$(VCInstallDir)ce\atlmfc\lib\ARMV4;$( VCInstallDir)ce\lib\ARMV4;|Smartphone
2003
(ARMV4)|$(VSInstallDir)SmartDevices\SDK\SmartPhone 2003\lib\ARMV4;$(VCInstallDir)ce\atlmfc\lib\ARMV4; $(VCInstallDir)ce\lib\ARMV4;</PropertyValue>
<PropertyValue
name="ReferenceDirectories">Win32|$(FrameworkDir)$ (FrameworkVersion);$(VCInstallDir)atlmfc\lib|x64|$ (FrameworkDir)$(FrameworkVersion);$(VCInstallDir)a tlmfc\lib\amd64|Pocket PC 2003 (ARMV4)||Smartphone 2003 (ARMV4)|</PropertyValue>
<PropertyValue
name="ExcludeDirectories">Win32|$(VCInstallDir)inc lude;$(VCInstallDir)atlmfc\include;$(VCInstallDir) PlatformSDK\include;$(FrameworkSDKDir)include;$(Fr ameworkDir)$(FrameworkVersion);$(VCInstallDir)atlm fc\lib|x64|$(VCInstallDir)include;$(VCInstallDir)a tlmfc\include;$(VCInstallDir)PlatformSDK\include;$ (FrameworkSDKDir)include;$(FrameworkDir)$(Framewor kVersion);$(VCInstallDir)atlmfc\lib\amd64|Pocket
PC 2003
(ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)S martDevices\SDK\PocketPC2003\include;$(VCInstallDi r)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SD K\SQL
Server\Mobile\v3.0;;|Smartphone 2003
(ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)S martDevices\SDK\SmartPhone2003\include;$(VCInstall Dir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\ SDK\SQL Server\Mobile\v3.0;;</PropertyValue>
<PropertyValue
name="IncludeDirectories">Win32|C:\Development\pro jects\Zipl_src;$(VCInstallDir)include;$(VCInstallD ir)atlmfc\include;$(VCInstallDir)PlatformSDK\inclu de;$(FrameworkSDKDir)include|x64|$(VCInstallDir)in clude;$(VCInstallDir)atlmfc\include;$(VCInstallDir )PlatformSDK\include;$(FrameworkSDKDir)include|Poc ket
PC 2003
(ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)S martDevices\SDK\PocketPC2003\include;$(VCInstallDi r)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SD K\SQL
Server\Mobile\v3.0;|Smartphone 2003
(ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)S martDevices\SDK\SmartPhone2003\include;$(VCInstall Dir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\ SDK\SQL Server\Mobile\v3.0;</PropertyValue>
<PropertyValue
name="SourceDirectories">Win32|$(VCInstallDir)atlm fc\src\mfc;$(VCInstallDir)atlmfc\src\mfcm;$(VCInst allDir)atlmfc\src\atl;$(VCInstallDir)crt\src|x64|$ (VCInstallDir)atlmfc\src\mfc;$(VCInstallDir)atlmfc \src\mfcm;$(VCInstallDir)atlmfc\src\atl;$(VCInstal lDir)crt\src|Pocket
PC 2003
(ARMV4)|$(VCInstallDir)ce\atlmfc\src\atl\;$(VCInst allDir)ce\atlmfc\src\mfc\;$(VCInstallDir)ce\crt\sr c\|Smartphone
2003
(ARMV4)|$(VCInstallDir)ce\atlmfc\src\atl\;$(VCInst allDir)ce\atlmfc\src\mfc\;$(VCInstallDir)ce\crt\sr c\</PropertyValue>
<PropertyValue
name="ExecutableDirectories">Win32|$(VCInstallDir) bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallDir) Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(V SInstallDir)Common7\ide;$(ProgramFiles)\HTML
Help
Workshop;$(FrameworkSDKDir)bin;$(FrameworkDir)$(Fr ameworkVersion);$(VSInstallDir);$(VSInstallDir)\SD K\v2.0\bin;$(SystemRoot)\SysWow64;$(FxCopDir);$(PA TH)|x64|$(VCInstallDir)bin\x86_amd64;$(VCInstallDi r)bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallDi r)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$ (VSInstallDir)Common7\ide;$(ProgramFiles)\HTML
Help
Workshop;$(FrameworkSDKDir)bin;$(FrameworkSDKDir)l ib\win64;$(FrameworkDir)$(FrameworkVersion);$(FxCo pDir);$(PATH)|Pocket
PC 2003
(ARMV4)|$(VCInstallDir)ce\bin\x86_arm;$(VCInstallD ir)bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallD ir)Common7\Tools;$(VSInstallDir)Common7\IDE;$(VSIn stallDir)Common\Tools;$(VSInstallDir)Common\IDE;$( VSInstallDir);$(FrameworkSDKDir)Bin;$(PATH);|Smart phone
2003
(ARMV4)|$(VCInstallDir)ce\bin\x86_arm;$(VCInstallD ir)bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallD ir)Common7\Tools;$(VSInstallDir)Common7\IDE;$(VSIn stallDir)Common\Tools;$(VSInstallDir)Common\IDE;$( VSInstallDir);$(FrameworkSDKDir)Bin;$(PATH);</PropertyValue>
</ToolsOptionsSubCategory>

and i did set an env variable VCInstallDir to the correct path(which i am
hoping would override whatever studio has)

C:\Documents and Settings\User>set VCInstalldir
VCInstallDir=C:\Program Files\Microsoft Visual Studio 8

Am I missing something.

Also want to metion that i do have 2 third party math libraries(*.lib) that
are not built using VS2005. But they do link fine using VS2003 and VS6.00.
Not sure if this should have any effect.

Regards
Bk
"Carl Daniel [VC++ MVP]" wrote:
"BK-Chicago" <BK*******@discussions.microsoft.comwrote in message
news:89**********************************@microsof t.com...
>I am in the midst of porting a massive MFC application from VS6.0 to VS8.0.
While i have fixed most of the compile time errors, i do have quite a
linker
error that i have not been able to resolve. The error i get is
>
Error 100 error LNK2001: unresolved external symbol "public: virtual void
__thiscall CWnd::PostNcDestroy(void)"
(?PostNcDestroy@CWnd@@UAEXXZ) Evenout.obj
>
I have about 200 of these on almost all the obj's that have a dialog in
them(which is understandable). But i do see that the delcaration of
CWnd::PostNcDestory( ) in the systems afxwin.h header which is public:
>
// for custom cleanup after WM_NCDESTROY
public:
virtual void PostNcDestroy();
>
Do i need to refer to any particular version of SDK/ *.lib or am i
missing
something. Any help here would be appreciated.
Make sure that you're not still linking against the VC6 version of MFC.
Check the project settings and the Tools|Options|Projects and Solutions|C++
Directories to make sure that the VS2005 directories are the only ones on
the library search path.

-cd

Aug 16 '06 #4

"BK-Chicago" <BK*******@discussions.microsoft.comwrote in message
news:FA**********************************@microsof t.com...
The issue has been resolved.

The following actions were taken to resolve the issue:
1. VS 2005 was uninstalled
2. Visual Studio .NET2003 was uninstalled
3. VS 2005 was uninstalled
I assume you meant reinstalled...
4. A clean rebuild.

Looks like the initial installation order of
VS 6.0
VS 2005
VS.NET2003
throws the env in a form that confuses VS2005.
That's not shocking. It's probably always best to install in order of
release date...

-cd
Aug 17 '06 #5
Yep!!.. So here are the steps..
1. VS 2005 was uninstalled
2. Visual Studio .NET2003 was uninstalled
3. VS 2005 was re-installed

"Carl Daniel [VC++ MVP]" wrote:
>
"BK-Chicago" <BK*******@discussions.microsoft.comwrote in message
news:FA**********************************@microsof t.com...
The issue has been resolved.

The following actions were taken to resolve the issue:
1. VS 2005 was uninstalled
2. Visual Studio .NET2003 was uninstalled
3. VS 2005 was uninstalled

I assume you meant reinstalled...
4. A clean rebuild.

Looks like the initial installation order of
VS 6.0
VS 2005
VS.NET2003
throws the env in a form that confuses VS2005.

That's not shocking. It's probably always best to install in order of
release date...

-cd
Aug 17 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

4 posts views Thread by Chris Travers | last post: by
2 posts views Thread by sandip desale | last post: by
34 posts views Thread by subramanian100in | last post: by
133 posts views Thread by Jean-Pierre Mestre | last post: by
reply views Thread by viren.chaudhary2008 | last post: by
1 post views Thread by viren.chaudhary2008 | last post: by
reply views Thread by kamranasdasdas | last post: by
reply views Thread by gcreed | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.