問題タブ [lnk2005]

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 投票する
1 に答える
150 参照

c++ - 非テンプレート関数によって排他的に呼び出される LNK2005

タイルベースのゲーム (正方形、線など) でタイルのさまざまな形状を描画するのに役立つテンプレート関数のコレクションを含む、ShapeBuilder という名前の C++ 名前空間があります。この名前空間のすべての関数は、非テンプレート関数を作成しようとするまで、エラーなしでテンプレートを使用しました-次のような単純なもの

次のエラーが発生しました。

  • WorldBuilder は名前空間 ShapeBuilder を使用します (もちろん、ShapeBuilder.h も含まれます)。
  • HouseGenerator は WorldBuilder のフレンド クラスで、WorldBuilder.h を含みます。
  • すべての ShapeBuilder コードは、WorldBuilder.h を含む ShapeBuilder.h に記述されています。
  • 再帰的包含を防ぐために、関連するすべてのクラスで #pragma once を実際に使用しました。

トップ コードを次のコードに置き換えると、エラーが解消されます。

したがって、技術的には、すべての関数の前にテンプレート宣言を配置することもできますが、それでは地獄に落ちることは間違いありません。何が起こっているのか分かりますか?

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

c++ - エラー: クラス computer comp は既に computer.obj で定義されています

私は現在 C++ で遊んでおり、C++ で作成した Tic Tac Toe バッチ コンソール ゲームを再構築しようとしていますが、エラーを取り除く方法がわからない壁にぶつかっていますTicTacToe.obj : error LNK2005: "class computer comp" (?comp@@3Vcomputer@@A) already defined in computer.obj。関数 computer の宣言をヘッダーから削除し、C++ で関数の定義を削除しようとしましたが、エラーは修正されませんでした。このエラーを削除する方法を見つけた唯一の方法は、オブジェクト名を削除することでした。これは、私がやりたくないことです。Web サイトhttp://www.cplusplus.com/doc/tutorial/classes/にある例を使用して、クラス コンピューターをセットアップしました。C++ についてもっと知りたいと思っているので、現在発生しているエラーや不要な関数について提供できる情報は、大歓迎です。

コード:

TicTacToe.cpp

コンピューター.cpp

computer.h

追加情報:

Windows 7 を実行しているラップトップで Microsoft Visual Studio Professional 2013 を使用しています。

0 投票する
2 に答える
199 参照

c++ - LNK2005、C++/CLI、わかりません

私は純粋な C++ コードを持っています。Dictionary と Training の 2 つのクラスがあります。これらのクラスを使用して WinForms プロジェクトを作成したいと思います。したがって、2 つのフォームがあり、グローバル変数のようにクラス メンバーを両方で共有する必要があります。MyForm.h の一部として、そのようにしようとしました。

いくつかのイベントがあります:

2 番目のフォームの一部:

すべてのヘッダーで、#ifndef または #pragma を 1 回使用していますが、依然として奇妙な LNK2005 エラーが発生します。

完全なコード:

MyForm.h : https://codeo.me/5mO

ExploreForm.h : https://codeo.me/5mI

globals.h: https://codeo.me/5mJ

globals.cpp: https://codeo.me/5mK

Dictionary.h: https://codeo.me/5mL

MyForm.cpp: https://codeo.me/5mP

2 つのフォーム間でネイティブ C++ クラス メンバーを共有するにはどうすればよいですか? lnk2005 について多くの質問があることは承知していますが、何かアイデアはあります。

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

c++ - C++ クラス: 概念クラス ドッペルゲンガー: LNK2005

おいおい。クラスを定義するときに悪名高いLNK2005エラーに遭遇しましたが、問題を特定できないようです。

(組織をよく反映するために、私の同様に悪名高いシングルトンを引き裂いています。)最初のシングルトンは... ...非常に分岐した、素晴らしい方法で... C++ OPPの原則をすべて回避するようにコーディングされました当時は知らなかったコンセプトですが、うまくいきました!....何とかして。最も単純な C++ の概念のまぐれではありますが。高速に動作させるには、編成、コンパイル速度、および高度な構造化手法が必要です。

A-とにかく。それを分割し、いくつか書き直さなければならなかった後、私は必要性に気づきました。複数の.cppファイルを宣言する必要があるのは、単純に、二重宣言と通常のヘッダー クラス定義によってコンパイラが非常にイライラするからです。

さらに、必要に応じてプリプロセッサ ディレクティブを使用しました。しかし、まだ何かが間違っています。

注(編集):エラーが発生するように質問を書き直しました。

検討:

D3D.h

...とWindows.h

ついに、Infinity.h

すべての実装はそれぞれの .cpp ファイルにあります。その上#pragma、私は使用しました#ifndef... #endif. ヘッダー ファイル内のクラスを自動初期化することによって、ある種の実装をうっかり呼び出しているのではないかと思います。しかし、それは非常にコーシャに見え、関数メンバーを次のように宣言できます。

Direct3D.D3D_Start()静的メンバーを指定せずに、Direct3D::D3D_Start(). ヘッダーはすべて静的にする必要がありますか?

編集:以下、.cppファイル:

* .cppNiall のソリューションを表示するように変更された更新。編集:

質問:

Stack Overflow question の解決策を考慮して、ヘッダーファイルでクラスを自動初期化したため、LNK2005の問題が発生していますか?

#pragma once および #ifndef の使用中に VS 2010 C++ LNK2005 エラーが発生する

私のソリューションの理解に基づいて、これはうまくいかないようです。

コンパイラ

VS2013 の戻り値:

Error 1 error LNK2005: "class Direct3D Direct3D" (?Direct3D@@3V0@A) already defined in Direct3D.obj C:\Users\InfinityMachine\documents\visual studio 2013\Projects\Win32Project3\Win32Project3\Win32Project3.obj Win32Project3

Error 2 error LNK2005: "class Windows Windows" (?Windows@@3V0@A) already defined in Win32Project3.obj C:\Users\InfinityMachine\documents\visual studio 2013\Projects\Win32Project3\Win32Project3\Windows.obj Win32Project3

Error 3 error LNK1169: one or more multiply defined symbols found C:\Users\InfinityMachine\documents\visual studio 2013\Projects\Win32Project3\Debug\Win32Project3.exe 1 1 Win32Project3

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

c++ - C++ - 別ファイルの構造体

私は MVS 2013 を使用しており、ファイル ListStruct.h に構造体を書きました。リンク中にエラー LNK2005 が発生します。

現在 - ListStruct.h の一部

私のメインの一部:

私は何を間違っていますか?ListStruct.cpp ファイルを作成する必要がありますか? どのように見えるはずですか?

0 投票する
2 に答える
1772 参照

c++ - リンカー エラー: comsupp.lib および comsuppwd.lib

エラーは次のとおりです。

エラー 14 エラー LNK2005: "void __stdcall _set_com_error_handler(void (__stdcall*)(long,struct IErrorInfo *))" (?_set_com_error_handler@@YGXP6GXJPAUIErrorInfo@@@Z@Z) comsupp.lib(comsupp.obj) comsuppwd で既に定義されています。ライブラリ

以前に誰かがこれに遭遇しましたか?