Visual studio 2010 致命错误LNK1112:模块机器类型';X86和x27;与目标机器类型'冲突;x64和x27;

Visual studio 2010 致命错误LNK1112:模块机器类型';X86和x27;与目标机器类型'冲突;x64和x27;,visual-studio-2010,64-bit,preprocessor,linker-errors,Visual Studio 2010,64 Bit,Preprocessor,Linker Errors,我使用Visual Studio 2010 Premium。我有两个项目A和B,我尝试将它们编译到64位平台。 项目A输出项目B所依赖的.dll和.lib文件。 我已经成功地将project A编译到64位平台,但在编译project B时,出现以下错误: mfcs100d.lib(nolib.obj):致命错误LNK1112:模块计算机类型“X86”与目标计算机类型“x64”冲突 有什么问题吗?我真的不知道这个mfcs100d.lib文件是什么。 我在project A的dll文件中使用了“D

我使用Visual Studio 2010 Premium。我有两个项目A和B,我尝试将它们编译到64位平台。
项目A输出项目B所依赖的.dll和.lib文件。
我已经成功地将project A编译到64位平台,但在编译project B时,出现以下错误:

mfcs100d.lib(nolib.obj):致命错误LNK1112:模块计算机类型“X86”与目标计算机类型“x64”冲突

有什么问题吗?我真的不知道这个mfcs100d.lib文件是什么。
我在project A的dll文件中使用了“Dependency Walker”,它似乎完全依赖于64位dll文件。 此外,我转到项目B(属性页->配置属性->链接器->高级),并确认“目标机器”设置为“MachineX64”。 此外,在Configuration Manager上,平台设置为x64

有人告诉我问题可能是这样的:

转到项目B(属性页->配置属性->C\C++->预处理器->预处理器定义),我有以下值:

WIN32  
_DEBUG  
_WINDOWS  
_AFXEXT  
这真的有关系吗?我应该替换“WIN32”值吗?如果是,那怎么办?我真的不明白这些定义的含义以及如何改变它们


编辑:我刚刚意识到这可能根本没有关系。这些只是预处理器的定义,例如可以通过C++定义命令来确定的。但我可能错了。

很难搞错。从Build+Configuration Manager开始,仔细检查两个项目是否都选择了x64。下一步是验证库搜索路径。右键单击项目、属性、VC++目录、库目录。单击组合框箭头查看“继承的值”$(vInstallDir)atlmfc\lib\amd64应该是列表中的第二个,这就是64位版本的mfcs100d.lib所在的位置。

很难搞错这一点。从Build+Configuration Manager开始,仔细检查两个项目是否都选择了x64。下一步是验证库搜索路径。右键单击项目、属性、VC++目录、库目录。单击组合框箭头查看“继承的值”$(vInstallDir)atlmfc\lib\amd64应该是列表中的第二个,这是64位版本的mfcs100d.lib所在的位置。

添加x64目标时,进入常规设置并查看输出目录和中间目录。对于调试目标,从“Debug”更改为“Debug64”,发布目标也是如此。

添加x64目标时,进入常规设置,查看输出目录和中间目录。对于调试目标,从“Debug”更改为“Debug64”,发布目标也是如此。

列表中的第一个值是$(vInstallDir)bin\x86\u amd64,第二个值是$(vInstallDir)bin。如何将第一个值更改为$(VCInstallDir)atlmfc\lib\amd64?似乎我无法重写此iteam,添加新项目导致我出错。您查看的设置错误,请查看库目录,而不是可执行目录。哦,是的,抱歉。是的,值$(VCInstallDir)atlmfc\lib\amd64确实写在那里,所以我想知道是什么问题。列表中的第一个值是$(VCInstallDir)bin\x86\u amd64,第二个值是$(VCInstallDir)bin。如何将第一个值更改为$(VCInstallDir)atlmfc\lib\amd64?似乎我无法重写此iteam,添加新项目导致我出错。您查看的设置错误,请查看库目录,而不是可执行目录。哦,是的,抱歉。是的,值$(VCInstallDir)atlmfc\lib\amd64确实写在那里,所以我想知道是什么问题。不要摆脱WIN32,即使编译64位代码,它仍然是WIN32 API,所以需要定义WIN32。不要摆脱WIN32,即使编译64位代码,它仍然是Win32 API,因此您需要定义Win32。您可以添加此屏幕截图吗?您可以添加此屏幕截图吗?