Игнорирование файлов при объединении метаданных во время процесса связывания в VS2005 - PullRequest
0 голосов
/ 06 мая 2009

Я пытаюсь, чтобы мой проект компилировался с общеязыковой средой выполнения, и я неожиданно сталкиваюсь со следующими ошибками компоновки при попытке сделать отладочную сборку:

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

Я пытался пересобрать все решение, и все еще вижу ту же ошибку. Если кто-нибудь знает, что может быть причиной этого, я хотел бы знать. Единственное решение, которое я вижу, это сказать отладчику не создавать отладочную информацию для дублированных типов. Единственная проблема в том, что я не знаю, как это сделать (или даже если это вообще возможно). Если кто-то знает, я буду признателен за помощь.

Большое спасибо за вашу помощь!

Даниэль Ауэрбах

Ответы [ 2 ]

1 голос
/ 06 мая 2009

Есть ли у вас несколько версий IDirect3D или какой-либо другой библиотеки? Например: скажем, у вас есть пара модулей, dll, который вы предварительно создали (с зависимостью от какой-то неизвестной версии IDirect), и модуль, который вы создали, скажем, с последней версией этой библиотеки. Это может дать вам такую ​​ошибку.

См. Документацию MSDN для LNK 2022

0 голосов
/ 12 июня 2009

Я получил эту ошибку, если вы перешли к объявлению классов в C ++ / CLI, а затем прочитали полное объявление где-то еще:

// one.h
class CMyNewClass;

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

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

Я думаю, что именно эта комбинация и вызывает эту проблему, но у меня нет Visual Studio под рукой, чтобы проверить ее дважды.

...