問題タブ [lnk2022]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3798 参照

c++ - リンカ エラー: LNK2022

共通言語ランタイムをサポートするプロジェクトでブースト スレッドを使用しようとしています。次のリンカ エラーが発生します。エラー LNK2022: メタデータ操作に失敗しました (8013119F): TypeRef が存在しますが、これには対応する TypeDef があります: (ダミー): (0x01000073)。

ブースト スレッドをインスタンス化する行にコメントを付けると、リンカ エラーは発生しません。

このエラーを修正するためにオンラインで調べてみましたが、そのような場所の 1 つで、ブースト ライブラリを含める前に「 #define BOOST_THREAD_USE_DLL」を使用することが提案されました。これを試しましたが、それでも同じエラーが発生します。

関連するスレッドがあります ( 「LNK2022: メタデータの操作に失敗しました」と頭がおかしくなりました)、同じ問題ではありませんが、多少似ています。そこで提案された修正を試みましたが、まだ運がありません。

これを修正する方法を知っている人はいますか?

0 投票する
1 に答える
3987 参照

c++ - LNK2022: メタデータ操作に失敗しました: 重複した型のフィールド宣言に一貫性がありません

C++ .NET プロジェクトのコンパイルに問題があります。

「LNK2022: メタデータ操作が失敗しました」を読んだことがありますが、これは私の場合ではありません。私の場合、1 つのプロジェクトをコンパイルできないためです。リンク時に失敗します。そのトピックのすべて (2 つ) のソリューションを試しましたが、役に立ちませんでした。

このエラーは、クラスをテンプレート クラスに変更した直後に発生し始めました。私は Vector2Di (int 型の場合) クラスを持っていて、float 型の場合も完全に同じ必要があるため、Vector2D に名前を変更し、テンプレートを使用するように変更しました。

そして、リンカーエラーが表示され始めました:

エラー LNK2022: メタデータ操作に失敗しました (80131188):重複した型のフィールド宣言に一貫性がありません(型: NativeValue >; フィールド: m_NativeValue): (0x04000058)。

エラー LNK2022: メタデータ操作に失敗しました (8013118B):重複した型で実装されたインターフェイスに一貫性がありません(型: NativeValue >; インターフェイス: System.IDisposable): (0x09000005)。

この2種類のエラー。

簡単に説明すると、Vector2D は、C++ 値型クラス vector2d (テンプレートでもある) のラッピング .NET クラスになる予定です。すべての機能をラッパー クラスにリダイレクトする必要があるため、その値を保存する必要がありますが、ref クラスに管理されていない valuetype 変数を含めることができないため (コンパイル エラーが表示されます)、その valuetype でポインターを使用しますが、このポインターを割り当てる必要があります。どこかで割り当てを解除し、ref クラス NativeValue を設計しました。これもテンプレートであり、valuetype を参照として保存し、時間内に削除するようにします。

ここです:

さらに、別の奇妙なことが今出てきます。これらのタイプの使用法を cpp ファイルからヘッダーに移動すると、正常にコンパイルされます。

ヘッダー stdafx.cpp をプリコンパイルし、stdafx.h にすべての基本型 (Vector2D など) を含めます。次に、すべてのファイルに単純に stdafx.h をインクルードし、これらのタイプを使用します。

何か間違っている可能性がある場合は、教えてください。ありがとうございました。

0 投票する
1 に答える
1923 参照

visual-studio-2010 - カスタム属性は、VS 2008 ソリューションを VS 2010 に移行する際の一貫性のないエラーです

VS 2008 ソリューションを VS 2010 に移行しようとしています。ターゲット フレームワークを 4.0 のままにしておくと、すべてが完全に機能します (コンパイルとリンク)。

フレームワーク 2.0 を変更し、プラットフォーム フレームワーク v100 を変更すると (過去のコンパイル エラーを取得するため)、次のようなメタデータ リンク エラーが発生するだけです。

エラー LNK2022: メタデータ操作に失敗しました (80131195): カスタム属性に一貫性がありません: (0x0c0000f7)。C:\Development\Main\Filemaster\SoxService\MSVCMRTD.lib(managdeh.obj)

ILDAsm を使用することになっていることを読みましたが、obj ファイルが気に入らず、リンクが完了していないため、ロードする exe がありません。

エラーの種類を見つける方法について誰かアドバイスをいただけますか?

ツールと戦うことほど嫌いなことはありません。