在VS2005中链接过程中合并元数据时忽略文件

时间:2009-05-06 18:45:04

标签: c++ visual-studio clr linker

我正在尝试使用公共语言运行库编译我的项目,当我尝试进行调试构建时,我突然遇到以下链接错误:

Main.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (IDirect3DVertexShader9): (0x0200056e).

Main.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (IDirect3DVertexDeclaration9): (0x0200056f).

Main.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (IDirect3DDevice9): (0x02000a2a).

Main.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (IDirect3DSwapChain9): (0x02000ab0).

Main.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (IDirect3DIndexBuffer9): (0x02000ace).

Main.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (IDirect3DVertexBuffer9): (0x02000b4e).

Main.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (IDirect3DTexture9): (0x02000bbd).

Main.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (IDirect3D9): (0x02000c0e).

LINK : fatal error LNK1255: link failed because of metadata errors

我尝试重建整个解决方案,但我仍然看到同样的错误。如果有人知道可能导致这种情况的原因,我想知道。我能看到的唯一解决方案是告诉调试器不要为重复类型构建调试信息。唯一的问题是我不知道该怎么做(或者甚至可能的话)。如果有人知道,我会很感激帮助。

非常感谢您提供所有帮助!

Daniel Auerbach

2 个答案:

答案 0 :(得分:1)

您是否拥有IDirect3D的多个版本或任何库?例如:假设你有几个模块,一个你预先构建的dll(依赖于某个未知版本的IDirect)和你构建的模块,比如该库的最新版本。这可能会给你这样的错误。

请参阅LNK 2022

的MSDN文档

答案 1 :(得分:0)

如果您在C ++ / CLI中转发声明类,然后在其他地方读取完整声明,我就会收到此错误:

// one.h
class CMyNewClass;

// two.h
class CMyNewClass
{
//...
};

//main.cpp
#include "one.h"
#include "two.h"
//...

我认为这个组合导致了这个问题,但我现在没有Visual Studio可以仔细检查它。