none
Binscope: CompilerVersionCheck fails

    Question

  • Hi!

    I'm compiling a 32-bit exe with MS VS 2008. But when I check the binary with Binscope, I get the following errors:

    app.exe - CompilerVersionCheck ( FAIL ) 
    BadModules : 
    COMCTL32.dll (comctl32.lib) built with LINK compiler version 7.10.4035.0 (Frontend version: 0.0.0.0)
    KERNEL32.dll (kernel32.lib) built with LINK compiler version 7.10.4035.0 (Frontend version: 0.0.0.0)
    USER32.dll (user32.lib) built with LINK compiler version 7.10.4035.0 (Frontend version: 0.0.0.0)
    GDI32.dll (gdi32.lib) built with LINK compiler version 7.10.4035.0 (Frontend version: 0.0.0.0)
    ADVAPI32.dll (advapi32.lib) built with LINK compiler version 7.10.4035.0 (Frontend version: 0.0.0.0)
    SHELL32.dll (shell32.lib) built with LINK compiler version 7.10.4035.0 (Frontend version: 0.0.0.0)

    What can I do to get rid of the errors?

    Thanks,

    Rumma

    Thursday, August 04, 2011 8:40 AM

Answers

  • The modules themselves were built with an old compiler, not app.exe.  But since they are getting linked in with app.exe they get called out.

    The "fun" part of fixing Binscope CompilerVersionCheck failures is tracing those modules all the way down to where they originally got baked into your app.   I sometimes think of the process as similar to the detective work involved with chasing down tainted honey in the Seattle food supply (http://www.ice.gov/news/releases/1012/101220seattle.htm).  First you analyze the final product, which is a combination of all sorts of smaller inputs.   That surfaces a list of impurities or problems, then once you spot those you have to start doing more detective work to chase down the origin of where those came from, and then once you finally identify that you need to fix the problem at the source. 

    I would suggest taking some time to check through your project build settings and make sure that the paths the linker is using to find these specific DLL's is pointing to the latest and greatest and not old copies of DLL's you had left laying around from previous builds.   Or if it is not in your project but in a third party DLL you are including, then check how that DLL was built or start working with the owner to get a new build out to you.   As these are Windows components, make sure you're on the latest Platform SDK.   If you are, but there is a third party DLL you are including in your project that was not built with your project, and that DLL linked these, they could be getting included that way.  

    Just some ideas off the top of my head.  Pop the hood, roll up your sleeves, and start looking at how your build works.  You may find the following article marginally helpful if you are new to the idea of dependencies:

    "Understanding Dependencies of a Visual C++ Application"
    http://msdn.microsoft.com/en-us/library/ms235265(v=VS.80).aspx

    Hope that helps!

    Tuesday, September 13, 2011 11:57 PM