問題タブ [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 投票する
3 に答える
5539 参照

c++ - Visual C++ LNK2005、LNK2019 のリンカ エラー - 原因不明

nVidia 9.5 SDK からコードをビルドしようとしていますが、次のリンカー エラーが発生します。

ディレクトリを正しくセットアップしたと 99% 確信しているので、なぜこのようなエラーが発生するのかわかりません。

たとえば、見つからない関数の 1 つは TextureFactory::CreateTextureFromFile ですが、その関数が宣言および定義されているディレクトリが、Visual C++ 設定の include/source ディレクトリに既に追加されています。

ファイルの上部は次のようになります。

さらに言えば、これらのエラーが発生しているファイルの先頭に #include "TextureFactory.h" と #include "texturefactory.cpp" を指定すると、あいまいさの余地がなくなり、関数が定義され、基本的に、リンカーエラーを生成する同じソースファイルにコピーして貼り付けますが、それでもリンカーエラーが発生します。

私は何かを見落としていますか?

0 投票する
18 に答える
79784 参照

c++ - エラー LNK2005: 新規および削除は LIBCMTD.lib(new.obj) で既に定義されています

2 つのプロジェクトを持つ Visual Studio 2005 ソリューションがあります。1 つは静的ライブラリで、もう 1 つは静的ライブラリの機能をテストするために使用される実行可能ファイルです。スタティック ライブラリは MFC を使用します。ソリューションをビルドすると、次のエラーが発生しました。

これを克服する方法がわかりません。このエラーが発生する理由を説明してください。.lib ファイルのリンケージの概要を示す説明は、高く評価されます。

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

c - Microsoft Visual Studio '08 で libpng をコンパイルするときに「エラー LNK2005:」(既に定義されている stdlib 関数) を回避する方法は?

(私がこれをやろうとしている理由: Windows で libpng のビルド済みバイナリを使用することに失敗したため (何時間にもわたる試行錯誤にもかかわらず)、自分でコンパイルしようとしています。この役立つブログを見つけました)これに関する投稿、Microsoft Visual Studio 2008 プロジェクト ファイルを完備していますが、残念ながらまだ使用できていません。)

ここにある zlib バイナリにリンクすると正常にコンパイルされますが、テスト ファイルにリンクしようとすると、次のメッセージが表示されます。

これらのエラーを修正する方法について、誰かが光を当てることができますか?

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

c++ - インライン非メンバー関数内のローカルクラスは、MSVC2005でLNK2005を生成します

どうやら、MSVC2005はローカルクラスのメンバー関数をインライン化できず、LNK2005につながります。

以下をコンパイルするときに、このLNK2005エラーに直面しています。

common.hコンテンツ:

foo.cppコンテンツ:

bar.cppコンテンツ:

LNK2005.cppコンテンツ:

エラーメッセージは次のとおりです。

ローカルクラスについて、ISOIEC14882-2003は次のように述べています。

9.8ローカルクラス宣言

クラスは関数定義内で定義できます。このようなクラスはローカルクラスと呼ばれます。ローカルクラスの名前は、それを囲むスコープに対してローカルです。ローカルクラスは、囲んでいるスコープのスコープ内にあり、囲んでいる関数と同じように、関数の外部の名前にアクセスできます。ローカルクラスの宣言では、型名、静的変数、外部変数と関数、および囲んでいるスコープの列挙子のみを使用できます。

囲み関数には、ローカルクラスのメンバーへの特別なアクセス権はありません。通常のアクセスルール(11節)に従います。ローカルクラスのメンバー関数は、定義されている場合は、クラス定義内で定義されるものとします。

私は何か見落としてますか?

私には、コンパイラのバグのように見えます。GCCとMSVC2008はそれをうまくコンパイルします。ただし、実際にコールをインライン化するのか、リンクフェーズ中に2つのシンボルの1つを破棄するだけなのか疑問に思います。興味深いことに、このローカルクラスメンバー関数への呼び出しさえないことに気付くでしょう。

MSVC2005の回避策があるかどうか疑問に思います。私はMSDNでこの典型的な問題を検索しようとしましたが、あまり成功しませんでした。コンパイラの既知のバグのリストを見つけることさえできませんでした。


添付ファイル:LNK2005.zip

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

c++ - プロジェクトに GLUI ライブラリを追加しようとすると、リリースでリンカーの問題が発生する

プロジェクトに GLUI ライブラリを追加しようとしています。デバッグ モードでのコンパイルは正常に実行されます。しかし、リリースでコンパイルすると、次のような多くの LNK2005 エラーが表示されます。

わかりました-アプリでCRTとMFCの両方を使用しているため、以前に同様のリンカーの問題がいくつかありましたが、このガイドを使用してこの問題を解決できました: http://support.microsoft.com/default.aspx?scid=http:// support.microsoft.com:80/support/kb/articles/q148/6/52.asp&NoWebContent=1

したがって、リンカーのプロジェクト設定で->入力パネルに

そう-これは以前はうまくいきました。しかし、プロジェクトに glui32.lib (実際には #pragma ステートメントを使用して glui.h ヘッダーに読み込まれる) を追加したので、これらのリンカー エラーが発生します。

私にできることについて何かアドバイスはありますか?

ありがとう!

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

c++ - LNK2005 & LNK1169 を無視するには?

そのため、外部ライブラリを使用する Visual Studio 2010 プロジェクトがあり、LNK2005 なしでコンパイルするには、リンカー設定でライブラリの順序を調整する必要がありました。

リリース モードでは正常にコンパイルできましたが、何らかの理由で、デバッグ時に LNK エラーなしでコンパイルすることができませんでした。

通常、LNK2005 を無視して、リンカーに最初に遭遇したものをそのまま使用するように指示する方法はありませんか?

ありがとう!

//編集: PARTICULAR 問題のエラー出力の一部を次に示します。ただし、私はすでにさまざまな方法でそれを解決しようとしましたが、各ソリューションではさまざまなリンカーの問題が発生しています。したがって、LNK2005を無視する一般的な解決策を探しています

Error 7 error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 8 error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 9 error LNK2005: _exit already defined in Libcmtd.lib(crt0dat.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 10 error LNK2005: __invalid_parameter already defined in Libcmtd.lib(invarg.obj) ...\msvcprtd.lib(MSVCP100D.dll)

...

Error 37 error LNK1169: one or more multiply defined symbols found

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

c++ - 静的ライブラリのstd::coutでのMSVC2010リンカーエラー2005

私はこの問題を抱えている人々の他の例を見つけましたが、彼らの解決策には運がありませんでした。ブーストスレッドとバインドも使用する静的ライブラリでstd::coutを使用しようとしています。使用せずstd::coutにメインプログラムと正常にコンパイルおよびリンクする場合でも、ライブラリをコンパイルしてコンパイルする場合は問題ありませんが、静的ライブラリを使用するメインプログラムをコンパイルしてリンクすると、次のようなものが大量に発生します。 :

等...

リンカの設定にアクセスして、エラー出力にリストされている競合するライブラリの使用を停止しようとしましたが、正しく取得できません。1つのライブラリの使用を停止するように指示すると、問題は解決する可能性がありますが、不足している外部シンボルがいくつか表示されます。問題が発生していたライブラリを切り替えますが、まだいくつかの「定義済み」が表示されます。これを修正するために私ができることの手がかりはありますか?「log」などと呼ばれる別のクラスを作成し、メインの.exeからアクセスする必要があります(文字列ライブラリを使用するため、問題が発生する可能性がありますが、まだ試していません)。助けてくれてありがとう。

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

visual-studio-2005 - Visual Studio 2005 での LNK 2005 エラー

Windows XP で Visual Studio 2005 を使用しています。「Google Test」フレームワークを使用しようとしています。しかし、リンカ エラーのため、1 つのテストだけを作成することはできませんでした。

デバッグ モードで /MDd オプションを使用して Google Test ソース ファイルをビルドし、新しいプロジェクトを作成しました。次に、このリンクに記載されている手順をプロジェクト プロパティ ファイルに作成しました。

/MDd オプションを使用してデバッグ モードでビルドしようとしたところ、次のエラーが発生しました。助けていただけますか?ありがとうございました。

gtest ファイルにコメントすると、エラーは次のようになります。

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

c++ - Visual Studio 2010 の Visual C++ での LNK 2005

Visual C++ 2005 と MFC を使用して記述された C++ プログラムを MS VS 2010 でコンパイルしようとしています。悲しいことに、コンパイル中に次のエラーが発生します。

CMemDCImpl には、クラス CMemDCImpl のすべてのメンバーの定義を含むヘッダー ファイルと、それらの実装を含む *.cpp ファイルがあります。このエラーを修正するのを手伝ってください。

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

c++ - 非テンプレート ベースのテンプレート クラスで LNK2005 エラーが発生する

テンプレート化されていない親クラスから継承するテンプレート化されたクラスChildがあります。複数の .cpp ファイルにChildのヘッダーを含めると、LNK2005 エラーが発生します。これは、が複数のコンパイル単位で定義されるために発生します。これらのユニットが一緒にリンクされると、LNK2005 エラーが発生します。

ご参考までに、Parentの目的は、 Child< ''type'' >ごとに 1 つだけでなく、すべてのChildインスタンスに対して 1 つの静的変数をChildに与えることです。

私の質問は、一意の (すべてのChildインスタンスにわたって) 静的変数を持ち、複数の .cpp ファイルに含めることができるテンプレート化されたクラスを作成するにはどうすればよいですか?

この LNK2005 エラーを引き起こすおもちゃの例を次に示します。

main.cpp

Apple.h

Apple.cpp

バナナ.h

バナナ.cpp

Child.h

エラー LNK2005:「保護: static int Parent::id」(?id@Parent@@1HA) は Apple.obj で既に定義されています