Hi,
I am working on a project to migrate a program from 32-bit to 64-bit. The program works fine on 32-bit machine under VC 7, but when I tried to compile it in VC 8 on a 64-bit machine, I received the following linking error:
error LNK2001: unresolved external symbol __CxxFrameHandler3
What is the possible cause for this error and how to fix it
(i have already tried the suggestions posted in
http://forums.microsoft.com/msdn/showpost.aspx postid=153127&SiteID=1
but still can't fix the problem)
Thanks
Matthew

error LNK2001: unresolved external symbol ___CxxFrameHandler3
Devon_Custard
Hi there,
I have linked the VC 6 version's basetsd.h in my VC 8 project, would that cause the linking error I mentioned in the previous thread.
Matthew
M Thorman
I'm not quite sure what the answer is for MFC, but for the CRT, you definitively need to make sure that its version is the same or newer than the compiler that you are using.
The compiler has a lot of helper functions in the CRT, so older CRT will be missing helpers that may be needed by newer compiler. For example, __CxxFrameHandler4 is a new helper that was added in VS2005.
Louis Lafreniere
VC++ Compiler back-end dev
Ronaldlee Ejalu
Ayman is right but I doubt it's the cause of your problems. Did you verify your LIB path to make sure you are linking to the right libs
The error you are getting indicates that you are not linking with the 64bit CRT. So maybe your LIN environment variable is pointing to the x86 libs, maybe it just has an incorrect path, maybe you are compiling with /Zl, etc...
Louis Lafreniere
VC++ Compiler back-end Dev
ForgeAus
Thank you for reply,
i have already used your suggestion to try solve my problem ,but can't fix the problem ,i tried to link with /verbose ,but can't discover the special error ,have you other suggest to make me to solve my problem
thanks
Matthew
Rajiv Bose
Shashi.kiran
Thank every one to reply me ,
I had already solved this problem ,the reason that make me have this problem is i changed the VC 8 default library ever, because my project have some components need the old VC version library .So, make me appear this linker error ,
If you migrate the project from VC 6 to VC7 or VC8,don't change the complier default library and don't link the old version library will be better!
Thank
Matthew
(^^, English poor,everyone hard to understand,sorry )
road66_be
Please avoid headers or libs from previous releases as that is an unsupported scenario.
Thanks, Ayman Shoukry VC++ TeamMarkMadd
Tim Murphy
You are probably linking with the wrong LIB path. __CxxFrameHandler3 is the exception handler in the CRT which the OS calls to handle the C++ EH code in you app.
So make sure LIB is set correctly, and try linking with /verbose. It will show you more info on the libs the linker is trying to pull in.
Louis Lafreniere
VC++ compiler dev
AngelaC
I get the same linker error.
What I gather from your comments is that VC2005's generating code that locks it to the RTL libraries that shipped with VC2005 so, it's not possible to generate an MFC42 application from VC2005 Is that correct
The linker error is because the compiler is embedding references to a function that only exist in newer versions of the RTL
Loaded msvcrtd.lib(MSVCRTD.dll)
Found ___CxxFrameHandler
I see this when I use VC6