错误21错误LNK2022:元数据操作失败(80131195):自定义属性不一致:(0x0c0004c7)

时间:2016-03-22 23:33:06

标签: c# visual-studio-2010 c++-cli

我有一个从MFC移植到WinForms的大型Windows窗体项目。业务逻辑全部使用C ++,因此我们使用C ++ / CLI编写了几个程序集来包装非托管代码。原始端口是使用Visual Studio 2005和.net 2.1完成的。我们已将其迁移到VS2010和.net 4.0。我们目前正在维护两个版本。一切都很好,直到我为一个类添加了一个头文件,所以我可以利用它的一个方法。只是添加标题导致错误:

错误21错误LNK2022:元数据操作失败(80131195):自定义属性不一致:(0x0c0004c7)。 C:\ XXXX \项目\ AAAAPI.obj Project.API

这里有两个涉及的内容:

AAAAAPI.cpp,标题为AAAAAPI.h BBBBAPI.cpp,标题为BBBBAPI.h

如果AAAAAPI仅包含AAAAPI.h 和BBBBAPI.cpp只包括BBBBAPI.h所有链接和运行为exxcted

但是当我将AAAAPI.h添加到BBBBAPI.cpp时,我得到了上述错误。有趣的是它不是关于BBBAPI.OBJ而是AAAAPI.OBJ

的比较

此外,如果我从BBBBAPI.h(其工作方式如下)中删除AAAAAPI.h并将BBBBAPI.H添加到AAAAPI.cpp它也可以。因此,在一个cpp filr中相同的两个标题工作,而在另一个cpp filr中它们不起作用。

我希望这足以让您了解我的问题。代码涉及它是一个非常大的系统的一部分,并且很难添加关于代码正在做什么的更多细节。请注意,我所要做的就是添加一个头文件,它只是一个类定义,没有可执行代码来导致错误。

任何挫折都会大大降低。

1 个答案:

答案 0 :(得分:0)

当我有一个影响类定义的#define时,我得到了这个错误,并且类定义最终因根据它包含的文件而不同。检查您是否有任何可能影响您的课程的#defines或类似内容。

如果您想要更加坚定的答案,您必须发布代码。没有看到代码就无法诊断代码问题。