問題タブ [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.
c++ - LNK2005 - .hpp ファイルで関数を宣言する際のエラー
プログラムを作成していますが、マウスがオブジェクト上にあるかどうかを確認する関数が必要です。プロジェクト内の複数のファイルが関数を使用するため、関数を作成し、新しい .hpp ファイルを作成しました。ファイルは と呼ばれHitboxDetec.hpp
ます。私が書いた関数は次のようになります。
必要なライブラリなどを含め、コードが機能しました (.cpp ファイルで関数を宣言してテストしました)。
私の .cpp ファイルにCookieDetec.hpp
-File を含め、それを次のように呼び出しました
プログラムをコンパイルすると、LNK2005 エラーが発生します。どうすればこれを修正できますか?
c - .c ファイルに .h ファイルを含めると LNK2005 が発生する
C言語を使用してプログラムにスタックを実装しようとしています。それらを3つのファイルに分けます。
まず、stack.h ファイル。スタックのPop、Pushなど、いくつかの重要な宣言と関数が含まれています。次に、stack.c ファイル。stack.h ファイル内の関数を実装したファイルです。私の場合、動的配列を使用してスタックを実装します。3 つ目は、main.c ファイルです。ここで Stack を使用して計算を行います。
しかし、最後に LNK2005(...既に定義されています...obj) コンパイル エラーが発生します。複数回の定義が存在する場合、このエラーが発生することはわかっています。ただし、.h/.c ファイルで同じ関数名の例を多数見ましたが、エラーは発生しませんでした。
エラーログは次のとおりです。
ご清聴ありがとうございました。これが私のstack.hファイルです。
これが私のstack.cファイルです。
これが私のmain.cファイルです
c++ - この LNK2005 エラーは BST コードのどこから来ていますか
私は自分の参照用に基本的な BST プロジェクトに取り組んでいます。BST.h、BST.cpp、main.cpp の 3 つのファイルがあります。
BST.h の内部は次のようになります。
そして、BST.cpp内には、これらすべての関数などの正式な定義があります...例は次のとおりです。
main.cpp ファイルは現在空です。戻り値が 0 の include と main() のみがあります。
このソリューションを構築しようとすると、作成した関数ごとに LNK2005 エラーが発生します。これは、PrintInOrderPrivate 定義のコードを完成させるまで発生しなかったようです。LNK2005 は通常、複数のファイルにまたがる関数の複数の定義によって引き起こされることを知っていますが、BST.h には何も定義せず、プロトタイプのみを定義しています。エラーはすべて次のようになります。
重大度コード 説明 Project File Line Suppression State Error LNK2005 "public: __thiscall BST::BST(void)" (??0BST@@QAE@XZ) already defined in BST.obj BasicBinarySearchTreeReference C:\Users\guita\documents\visual studio 2015\Projects\BasicBinarySearchTreeReference\BasicBinarySearchTreeReference\main.obj 1
解読できない LNK1169 エラーも表示されます。
これらのエラーが発生する理由についての洞察は大歓迎です。私は本当にBSTをよりよく理解しようとしていますが、これは現在私の方法です。
ありがとう!
c++ - main.cpp のどの #include を使用すればよいか (LNK2005 は既に定義されています)
私は次のクラスを持っています:
// Buffer.cpp
// Buffer.h
// main.cpp
プログラムを実行すると、次のエラーが表示されます。
重大度コード 説明 Project File Line Suppression State Error LNK2005 "public: class MonoSample * __cdecl Buffer::getSample(int)" (?getSample@Buffer@@QEAAPEAVMMonoSample@@H@Z) は Buffer.obj で既に定義されています
重大度コード 説明 Project File Line Suppression State Error LNK2005 "public: class MonoSample * __cdecl Buffer::getFirstSample(void)" (?getFirstSample@Buffer@@QEAAPEAVMMonoSample@@XZ) は Buffer.obj で既に定義されています
(...)
main.cpp に #include "Buffer.cpp" と書いているのが原因だと思いますが、その #include なしでそれを行う方法がわかりません... 使用しない場合、どのように Buffer オブジェクトを使用できますか?この #include がありますか?
ありがとうございました!