微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VC ++项目64位迁移问题:链接器错误

如何解决VC ++项目64位迁移问题:链接器错误

我试图将VC ++项目从Win32迁移到x64,下面是该项目的项目配置

enter image description here

我遇到以下构建错误链接器)

1>ResourceCompile:
1>  Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>  
1>  copyright (C) Microsoft Corporation.  All rights reserved.
1>  
1>  
1>MSVCMRTD.lib(mstartup.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: tagMSG; fields: <alignment member>): (0x04000037).
1>MSVCMRTD.lib(mstartup.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: _Security_ATTRIBUTES; fields: <alignment member>): (0x04000044).
1>MSVCMRTD.lib(managdeh.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: tagMSG; fields: <alignment member>): (0x04000033).
1>MSVCMRTD.lib(managdeh.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: _Security_ATTRIBUTES; fields: <alignment member>): (0x04000038).
1>MSVCMRTD.lib(managdeh.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: _TP_CALLBACK_ENVIRON; fields: <alignment member>): (0x0400003e).
1>MSVCMRTD.lib(mehvecdtr.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: tagMSG; fields: <alignment member>): (0x04000032).
1>MSVCMRTD.lib(mehvecdtr.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: _Security_ATTRIBUTES; fields: <alignment member>): (0x04000037).
1>MSVCMRTD.lib(mehvecdtr.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: _TP_CALLBACK_ENVIRON; fields: <alignment member>): (0x04000038).
1>MSVCMRTD.lib(msilexit.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: tagMSG; fields: <alignment member>): (0x04000037).
1>MSVCMRTD.lib(msilexit.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: _Security_ATTRIBUTES; fields: <alignment member>): (0x0400003f).
1>MSVCMRTD.lib(msilexit.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: _TP_CALLBACK_ENVIRON; fields: <alignment member>): (0x0400004a).
1>MSVCMRTD.lib(puremsilcode.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: tagMSG; fields: <alignment member>): (0x04000032).
1>MSVCMRTD.lib(puremsilcode.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: _Security_ATTRIBUTES; fields: <alignment member>): (0x04000037).
1>MSVCMRTD.lib(puremsilcode.obj) : error LNK2022: Metadata operation Failed (80131188) : Inconsistent field declarations in duplicated types (types: _TP_CALLBACK_ENVIRON; fields: <alignment member>): (0x0400003d).
1>MSVCMRTD.lib(mstartup.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (tagMSG): (0x0200003a).
1>MSVCMRTD.lib(mstartup.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (_Security_ATTRIBUTES): (0x02000044).
1>MSVCMRTD.lib(managdeh.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (tagMSG): (0x02000035).
1>MSVCMRTD.lib(managdeh.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (_Security_ATTRIBUTES): (0x0200003a).
1>MSVCMRTD.lib(managdeh.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (_TP_CALLBACK_ENVIRON): (0x0200003b).
1>MSVCMRTD.lib(mehvecdtr.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (tagMSG): (0x02000033).
1>MSVCMRTD.lib(mehvecdtr.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (_Security_ATTRIBUTES): (0x02000038).
1>MSVCMRTD.lib(mehvecdtr.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (_TP_CALLBACK_ENVIRON): (0x02000039).
1>MSVCMRTD.lib(msilexit.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (tagMSG): (0x0200003a).
1>MSVCMRTD.lib(msilexit.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (_Security_ATTRIBUTES): (0x0200003f).
1>MSVCMRTD.lib(msilexit.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (_TP_CALLBACK_ENVIRON): (0x02000040).
1>MSVCMRTD.lib(puremsilcode.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (tagMSG): (0x02000035).
1>MSVCMRTD.lib(puremsilcode.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (_Security_ATTRIBUTES): (0x0200003a).
1>MSVCMRTD.lib(puremsilcode.obj) : error LNK2022: Metadata operation Failed (8013118D) : Inconsistent layout information in duplicated types (_TP_CALLBACK_ENVIRON): (0x0200003b).
1>LINK : Fatal error LNK1255: link Failed because of Metadata errors
1>
1>Build Failed.
1>
1>Time Elapsed 00:00:12.02
========== Rebuild All: 0 succeeded,1 Failed,0 skipped ==========

我能够通过将结构成员对齐方式从/ Zp4更改为/ Zp16来解决上述错误,但是此更改会影响其他组件,有什么办法可以解决错误而无需更改结构成员对齐?

解决方法

也许您可以尝试以下步骤:

建议

1)如果您使用 CLR ,请按照以下步骤操作:

如果通过右键单击项目属性-> 配置属性-> CLR 选项。 > C / C ++ -> 常规->将选项公共语言运行时支持/clr更改为No Common ....。>

然后,右键单击每个cpp文件(实际上需要CLR属性-> C / C ++ -> 常规-> 公共语言运行时支持 /clr

2)右键单击项目属性-> C / C ++ ->设置调试信息格式到Program Database /Zi

3)项目属性-> C / C ++ -> 命令行-> 其他选项

,在下将启用最小重建设置为/clr:nostdlib /AI"%ProgramFiles%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0",将基本运行时检查设置为No(/RM-) C / C ++ -> 代码生成

4)通过右键单击已启用clr的文件,将这些文件设置为启用C ++异常属性-> C / C ++ -> 代码生成

此外,如果这些方法没有帮助,建议您与我们共享一些代码来帮助我们解决问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。