C++ 在VS2005中的链接过程中合并元数据时忽略文件
我试图用公共语言运行库编译我的项目,当我尝试进行调试构建时,我突然遇到以下链接错误:C++ 在VS2005中的链接过程中合并元数据时忽略文件,c++,visual-studio,clr,linker,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 fail
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)您是否拥有多个版本的
IDirect3D
或其他任何库?例如:假设您有两个模块,一个预先构建的dll(依赖于某个未知版本的IDirect
)和一个构建的模块,比如说该库的最新版本。这会让你犯这样的错误
请参阅MSDN文档,了解如果您在C++/CLI中转发声明类,然后在其他地方阅读完整声明,则会出现此错误:
// one.h
class CMyNewClass;
// two.h
class CMyNewClass
{
//...
};
//main.cpp
#include "one.h"
#include "two.h"
//...
我认为这个组合是导致这个问题的原因,但是我手头没有VisualStudio来仔细检查它