环境: Visual Studio 10, CLR/CLI Class Library
项目,由Platform Toolset v100
构建,目标是框架版本v3.5
。
我知道这个问题已经在这里提出了,但我没有找到解决问题的答案,所以再次提出这个问题。
在构建CLR/CLI Class Library (DLL)
项目时,链接器由于以下错误而失败:
MSVCMRT.lib(managdeh.obj) : error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c0000f7).
MSVCMRT.lib(managdeh.obj) : error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c0000fb).
MSVCMRT.lib(msilexit.obj) : error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c000128).
MSVCMRT.lib(msilexit.obj) : error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c00012c).
MSVCMRT.lib(puremsilcode.obj) : error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c0000ee).
MSVCMRT.lib(puremsilcode.obj) : error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c0000f1).
LINK : fatal error LNK1255: link failed because of metadata errors
发布于 2013-09-08 06:52:13
我在途中学到的另一件事是,不能将值、Platform Toolset
和Target Framework Version
混为一谈。
我发现的可能组合如下:
.NET 3.5或更低:
Platform Toolset
:v90,将使用Visual Studio 2008
运行时二进制文件,TargetFrameworkVersion
:v3.5 (或更少),_WIN32_WINNT
(例如,_WIN32_WINNT=0x0500
)。.NET 4.0或更高版本:
Platform Toolset
:v100,将使用Visual Studio 2010
运行时二进制文件,TargetFrameworkVersion
:v4.0 (或更高),如何定义这些值:
Platform Toolset
--在“项目设置”、“常规”、TargetFrameworkVersion
-卸载项目,右键单击卸载的项目并选择“编辑”。打开'*.*proj‘文件后,修改以下行:<TargetFrameworkVersion>v3.5<TargetFrameworkVersion/>
发布于 2013-09-03 07:33:05
从C/C++预处理程序中删除_WIN32_WINNT=0x0500
定义
显然,由于某些原因,上述预处理器定义与链接器不一致,导致链接器错误。我想这是微软内部的一些bug (?),但不确定。无论如何,在删除这个预处理器定义之后,所有的预处理器定义都正确地构建和链接了。
希望这些信息是有用的。
发布于 2016-05-02 12:05:28
在设置Windows版本的一些编译单元中,我有一些头文件:
#define _WIN32_WINNT 0x0501
问题在于其他编译单元(c++文件)没有设置该变量,因此error LNK2022
抱怨在多个编译单元(不同的文件)中以不同的方式编译相同的结构。
因此,我不能就这样取消_WIN32_WINNT
定义,所以我的解决方案与之前所建议的完全相反。
我只是为整个项目设置了它,所以所有的编译单元都以相同的方式编译。
项目属性-> C/C++ ->预处理器->预处理器定义
_WIN32_WINNT=0x0501;
https://stackoverflow.com/questions/18571546
复制相似问题