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.
>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
[quoted text clipped - 16 lines]
> 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
BK-Chicago - 04 Aug 2006 23:35 GMT
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\lib\i386;$(VCInstallDir)PlatformSDK\lib;$(FrameworkSDKDir)lib;$(VSInstallDir);$(VSInstallDir)lib|x64|$(VCInstallDir)lib\amd64;$(VCInstallDir)atlmfc\lib\amd64;$(VCInstallDir)PlatformSDK\lib\amd64;$(VSInstallDir)SDK\v2.0\lib\amd64|Pocket
PC 2003
(ARMV4)|$(VSInstallDir)SmartDevices\SDK\PocketPC2003\lib\ARMV4;$(VCInstallDir)ce\atlmfc\lib\ARMV4;$(VCInstallDir)ce\lib\ARMV4;|Smartphone
2003
(ARMV4)|$(VSInstallDir)SmartDevices\SDK\SmartPhone2003\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)atlmfc\lib\amd64|Pocket PC 2003 (ARMV4)||Smartphone 2003 (ARMV4)|</PropertyValue>
<PropertyValue
name="ExcludeDirectories">Win32|$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(VCInstallDir)PlatformSDK\include;$(FrameworkSDKDir)include;$(FrameworkDir)$(FrameworkVersion);$(VCInstallDir)atlmfc\lib|x64|$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(VCInstallDir)PlatformSDK\include;$(FrameworkSDKDir)include;$(FrameworkDir)$(FrameworkVersion);$(VCInstallDir)atlmfc\lib\amd64|Pocket
PC 2003
(ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)SmartDevices\SDK\PocketPC2003\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL
Server\Mobile\v3.0;;|Smartphone 2003
(ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)SmartDevices\SDK\SmartPhone2003\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL Server\Mobile\v3.0;;</PropertyValue>
<PropertyValue
name="IncludeDirectories">Win32|C:\Development\projects\Zipl_src;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(VCInstallDir)PlatformSDK\include;$(FrameworkSDKDir)include|x64|$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(VCInstallDir)PlatformSDK\include;$(FrameworkSDKDir)include|Pocket
PC 2003
(ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)SmartDevices\SDK\PocketPC2003\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL
Server\Mobile\v3.0;|Smartphone 2003
(ARMV4)|$(VCInstallDir)ce\include;$(VSInstallDir)SmartDevices\SDK\SmartPhone2003\include;$(VCInstallDir)ce\atlmfc\include;$(VSInstallDir)SmartDevices\SDK\SQL Server\Mobile\v3.0;</PropertyValue>
<PropertyValue
name="SourceDirectories">Win32|$(VCInstallDir)atlmfc\src\mfc;$(VCInstallDir)atlmfc\src\mfcm;$(VCInstallDir)atlmfc\src\atl;$(VCInstallDir)crt\src|x64|$(VCInstallDir)atlmfc\src\mfc;$(VCInstallDir)atlmfc\src\mfcm;$(VCInstallDir)atlmfc\src\atl;$(VCInstallDir)crt\src|Pocket
PC 2003
(ARMV4)|$(VCInstallDir)ce\atlmfc\src\atl\;$(VCInstallDir)ce\atlmfc\src\mfc\;$(VCInstallDir)ce\crt\src\|Smartphone
2003
(ARMV4)|$(VCInstallDir)ce\atlmfc\src\atl\;$(VCInstallDir)ce\atlmfc\src\mfc\;$(VCInstallDir)ce\crt\src\</PropertyValue>
<PropertyValue
name="ExecutableDirectories">Win32|$(VCInstallDir)bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML
Help
Workshop;$(FrameworkSDKDir)bin;$(FrameworkDir)$(FrameworkVersion);$(VSInstallDir);$(VSInstallDir)\SDK\v2.0\bin;$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)|x64|$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML
Help
Workshop;$(FrameworkSDKDir)bin;$(FrameworkSDKDir)lib\win64;$(FrameworkDir)$(FrameworkVersion);$(FxCopDir);$(PATH)|Pocket
PC 2003
(ARMV4)|$(VCInstallDir)ce\bin\x86_arm;$(VCInstallDir)bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallDir)Common7\Tools;$(VSInstallDir)Common7\IDE;$(VSInstallDir)Common\Tools;$(VSInstallDir)Common\IDE;$(VSInstallDir);$(FrameworkSDKDir)Bin;$(PATH);|Smartphone
2003
(ARMV4)|$(VCInstallDir)ce\bin\x86_arm;$(VCInstallDir)bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallDir)Common7\Tools;$(VSInstallDir)Common7\IDE;$(VSInstallDir)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
> >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
[quoted text clipped - 23 lines]
>
> -cd
BK-Chicago - 16 Aug 2006 23:01 GMT
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.
> Thank you for looking into this.
>
[quoted text clipped - 83 lines]
> >
> > -cd
Carl Daniel [VC++ MVP] - 17 Aug 2006 01:34 GMT
> 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.
>
[quoted text clipped - 3 lines]
> 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
BK-Chicago - 17 Aug 2006 22:19 GMT
Yep!!.. So here are the steps..
> > 1. VS 2005 was uninstalled
> > 2. Visual Studio .NET2003 was uninstalled
> > 3. VS 2005 was re-installed
> > The issue has been resolved.
> >
[quoted text clipped - 17 lines]
>
> -cd