vc_redist.x64.exe does not install mfcm140.dll and mfcm140u.dll in Surface Pro X with SQ2 processor.

Arun Retheesan Nair 1 Reputation point
2022-07-22T14:10:34.357+00:00

Hi,

Downloaded the VC++ 2019 redistributable from the given link https://aka.ms/vs/17/release/vc_redist.x64.exe and tried to install it in Surface pro X with SQ2 processor (Windows 11 pro). Noticed that it installed ARM related dlls but not x64 related dlls.

Installed our MFC application (x64) and tried to run it. On starting, it displayed the mfcm140.dll not present dialog.

I downloaded mfcm140.dll and copied it to the application's installed directory and then tried to re-run the application and it worked.

I notice that we also install VC++ 2013 redistributable and it had no problems installing mfcm120.dll and mfcm120u.dll.

We are trying to run our x64 application in emulation mode.

It looks like vc_redist.x64.exe identifies the processor type and installs arm instead of x64 dlls. Is there a way for me to force it to install x64 instead of arm dlls.

Kindly advise me on how to resolve this problem.

Regards
Arun

C++
C++
A high-level, general-purpose programming language, created as an extension of the C programming language, that has object-oriented, generic, and functional features in addition to facilities for low-level memory manipulation.
3,571 questions
Windows 11
Windows 11
A Microsoft operating system designed for productivity, creativity, and ease of use.
8,473 questions
0 comments No comments
{count} votes

3 answers

Sort by: Most helpful
  1. abbodi86 3,866 Reputation points
    2022-07-23T00:03:53.56+00:00

    Windows 11 on Arm provide x64 emulation, all 64-bit system binaries are Arm64EC, not native x64

    https://oofhours.com/2021/02/19/running-x64-on-windows-10-arm64-how-the-heck-does-that-work/

    You would think that adding x64 support to the ARM64 OS would require adding a set of x64-specific files, just like the x86 support added a set of x86-specific files. Nope, definitely not the case here. So what was done instead? More hybrid binaries. But unlike the SyChpe32 files, you don’t need a separate set of files, it’s all stashed inside the System32 DLLs

    yes, the vc_redist.x64.exe only installs Arm64EC dlls, which are the same you get from vc_redist.arm64.exe
    VC++ redist dlls Arm64EC & x64 cannot coexist, because both belong to System32 directory

    VC++ 2013 and earlier don't acknowledge Arm64 architecture, it's just detect the OS as 64-bit (VersionNT64) and installs

    0 comments No comments

  2. Arun Retheesan Nair 1 Reputation point
    2022-07-23T15:12:24.497+00:00

    How to make the application work in this scenario ?
    Does it mean that we have to do local deployment of x64 mfc dlls in the application's installed directory.


  3. Arun Retheesan Nair 1 Reputation point
    2022-07-25T19:32:59.94+00:00

    So based on the above answers , local deployment seems to be the only way.

    0 comments No comments