問題タブ [linker-errors]
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.
visual-c++ - Visual C++ の未解決の外部シンボル (独自の関数の 1 つが見つかりません)
これは非常に基本的な問題であり、現時点で私を苛立たせています。たとえば、1 つのソリューション内に 2 つのプロジェクトがあるとします。最初のプロジェクトを SimpleMath と呼びましょう。ヘッダーファイル「Add.h」が1つあります。
そして実装「Add.cpp」は
次に、2 番目のプロジェクトで add 関数を使用するとします。ただし、このコード:
#include "..\SimpleMath\Add.h"
「未解決の外部シンボル」になります。2 番目のプログラムに .cpp ファイル内の実際の実装について「認識」させるにはどうすればよいですか。補足として、すべてのコードは架空のものであり、これは私が実際にプログラムする方法ではありません。
c++ - この VC++ 6.0 リンカー エラーを解決するにはどうすればよいですか?
これは、前任者が 4 年前に構築し、インストールして実行している Windows コンソール アプリケーション (実際にはサービス) です。いくつかの変更を加える必要がありますが、現在のバージョンをビルドすることさえできません! ビルド出力は次のとおりです。
使用する/NODEFAULTLIB
と、大量のエラーが発生します。コードは実際には使用されていません_socket_noblock
が、ネット上で何も見つかりません。おそらく、リンクしているライブラリで使用されていると思われますが、どのライブラリにあるのかわかりません。
--- アリステア。
c++-cli - C++/CLI で PIMPL イディオムを使用する場合の MSVC++ リンカの警告
C++/CLI (バージョン 9.0) を使用して .NET アセンブリを作成しています。PIMPL イディオムを使用して、パブリック ヘッダーに不要なものを入れないようにしたいと考えています。残念ながら、クラスを前方宣言して追跡ハンドルを使用しようとすると、リンカー警告 4248 が表示されます。
警告 LNK4248: 'MyNamespace.PrivateClass' の未解決の typeref トークン (0100000E); イメージが実行されない場合があります
これは、実装クラスに CLI クラスを使用する場合でも、ネイティブ クラスを使用する場合でも同じようです。
コード例を以下に示します。
残念ながら、警告に関する Microsoft の説明はあまり有益ではありません。
c++ - エラー LNK2001 およびエラー LNK2019 (C++) -- これらのエラーについての学習を要求しています
よし、最後のコンパイラ エラーを終了したところ (そう思った)、次のエラーが表示されました。
さて、ここで簡単な概要です。
PI は WeaponsDB の静的定数であり、WeaponsDB::PI と適切な #include を使用して他のクラスによって参照されます (これの何が問題なのですか?)
他のほとんどのエラーは、allegro ゲーム ライブラリのタイマーの静的変数と静的メソッドに起因します。
これらのエラーの原因と、それらを取り除く方法は?
前もって感謝します
----------------編集内容-------------------
要求に応じて、WeaponsDB::PI が宣言および定義されます。WeaponsDB.h で宣言されています。
ただし、別のクラス Driver.cpp で定義されています。
これが私のコードの問題の 1 つである場合、これがエラーを引き起こす理由を知りたいです。
visual-studio-2005 - VS2005 で openttd をコンパイルする - freetype のリンカ エラー
さて、ここに素敵なあいまいなものがあります。Visual Studio 2005 で最新のオープン トランスポート タイクーン ソースをコンパイルしようとしています (これは、zlib、dx8、およびその他のいくつかのかなり一般的なライブラリを使用する C++ アプリです)。
フリータイプの依存関係に関連するリンカー エラーがいくつか発生します。
最新の freetype 安定版をダウンロードしてコンパイルし (これも VS2005 で)、ft2build.h および freetype インクルード ディレクトリを VS8/VC/include ディレクトリに配置し、libfreetype2.lib ライブラリをコンパイルして VS8/ に配置しました。 VC/lib ディレクトリ。何が欠けている可能性がありますか?
ありがとう!
c++ - 静的ライブラリ複数定義リンク エラー
そこで、VC++ 8.0 の演習として小さな 3D エンジンを構築しようとしています。TestBed exe によってリンクされている MathLib 静的ライブラリと Render 静的ライブラリがあります。現在、Render には、Color と DXManager3D の 2 つのクラスがあります。Color には、MathLib の Vector.h が含まれていますが、問題ありません。
2 番目に DXManager3D に Vector.h をインクルードしようとすると、シンボルが 2 回定義されており、2 番目の定義が無視されると言って爆発します (lib からの警告)。テストとして、Color.h から Vector.h を削除し、DXManager3D.h に残しました - 同じ問題です。これを防ぐために、すべてが ifndef にラップされていることを確認するためにトリプルチェックを行ったので、頭を悩ませています。
DXManager3D.obj : 警告 LNK4006: "public: __thiscall Math::Vector::Vector(void)" (??0Vector@Math@@QAE@XZ) は Render.obj で既に定義されています。2 番目の定義は無視されます
本当に混乱するのは、Render.lib を TestBed とは別にビルドするときに、これは静的な lib であるため、何もリンクしてはならないということですよね? 複数のシンボル定義の警告が引き続き表示されます。メインで DXManager3D をインスタンス化すると、警告がエラーになります。
Render.lib(DXManager3D.obj): エラー LNK2005: "public: __thiscall Math::Vector::Vector(void)" (??0Vector@Math@@QAE@XZ) は既に WinMain.obj で定義されています
はい、LNK4006 と LNK2005 を F1 しましたが、MSDN の解決策がうまくいきません。この質問が以前に尋ねられた場合は申し訳ありませんが、検索機能を使用するのに役立つ確かなものが見つかりませんでした.
ありがとう!
c++ - ボリューム シャドウ コピー サービス SDK の一部である vshadow をコンパイルする際のリンカー エラー
VSS SDK の C++ プロジェクトをコンパイルしようとすると、このリンカー エラーが発生します。
ShouldBlockRevert は、最初に宣言するときと実際に使用するときの 2 回使用されます。
ここで宣言:
ここで使用されます:
申し訳ありませんが、私はC ++が得意ではありません。
c++ - Borland C++ Builder 6 での奇妙なリンカ エラー
Borland C++ Builder 6 プロジェクトをコンパイルしようとしましたが、リンカは正確に次のエラーで終了します:
奇妙な点は、拡張子以外のファイル名を付けないことです。内部バグのように見えますが、グーグルで検索しても結果は得られませんでした。誰かがこのエラーに遭遇しましたか?
==解決済み==
実際には、ソースファイルの 1 つにある無効なコンパイラ ディレクティブが原因で、リンカ コマンド ラインが破損していました。手伝ってくれてありがとう。
c++ - スローキャッチがリンケージエラーを引き起こす
次のタイプのリンケージ エラーが発生します。
Festival.obj : エラー LNK2019: 未解決の外部シンボル "public: void __thiscall Tree::add(class Price &)" (?add@?$Tree@VPrice@@@@QAEXAAVPrice@@@Z) 関数 __catch$ で参照されています? AddBand@Festival@@QAE?AW4StatusType@@HHH@Z$0
以前は、try-catch メカニズムに関係していると思っていましたが、そうではないと言われました。これは質問の更新版です。
Visual Studio 2008 を使用していますが、g++ でも同様の問題があります。
関連するコード:
Festival.cpp で
Tree.h で:
興味深いことに、型 T が int のようなプリミティブ型であるときに Tree 関数を使用しようとしても、リンケージ エラーは発生しません。