title: fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
body: <p>I use Visual Studio 2010 Premium. I have two project A and B and I try to compile both to a 64-bit platform.<br>
  Project A outputs a .dll and a .lib file which project B relies on.<br>
  I already compiled successfully project A to a 64-bit platform, yet when I compile project B I get the following error : </p>
  
  <blockquote>
    <p>mfcs100d.lib(nolib.obj) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'</p>
  </blockquote>
  
  <p>What could be the problem ? I don't really know what is this mfcs100d.lib file.<br>
  I've used "Dependency Walker" on project A's dll file and it seems to be relying solely on 64-bit dll files.
  Additionally, I went to the Project B's (Property Pages -> Configuration Properties -> Linker -> Advanced) and confirmed that 'Target Machine' is set to "MachineX64".
  Also, On the Configuration Manager the Platform is set to x64.</p>
  
  <p>Someone infromed me that the problem may be such :  </p>
  
  <p>Going to project B's (Property Pages -> Configuration Properties -> C\C++ -> Preprocessor -> Preprocessor Definitions) I have the following values there :  </p>
  
  <pre><code>WIN32  
  _DEBUG  
  _WINDOWS  
  _AFXEXT  
  </code></pre>
  
  <p>Is that truly related ? Should I replace the 'WIN32' value ? if so, then how ? I don't really understand the meaning of those definitions and how to change them.  </p>
  
  <p>Edit : I just realized that probably it's not related at all. Those are simply definitions for the preprocessor, such as the ones which can be determined by a C++ #define command. Yet I could be wrong.</p>