問題タブ [unresolved-external]

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

c++ - メソッドがcppファイルで定義されている場合は未解決の外部ですが、ヘッダーでは定義されていません

アップデート2:これを引き起こした前方宣言のバグを発見

更新c ++ 0xを有効にして、VisualStudio2010ストックコンパイラを使用してコンパイルしました。

奇妙な動作をしているメンバー関数を持つクラスがあります。

cppファイルでメソッドを定義すると、リンカーは「未解決の外部シンボル」エラーでフォールオーバーします。定義をヘッダーに移動すると、正常にコンパイルされます。

1)これはテンプレート化された方法ではありません2)cppファイルは間違いなくコンパイルされています3)私は困惑しています

何かご意見は?

ヘッダーファイル

cppファイル

電話をかける

リンクエラー

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

unresolved-external - さらに別の解決された外部ケース

初めて尋ねる。

契約は次のとおりです。

プロジェクト全体で使用する、いくつかの数学関数を持つヘルパー クラス (少なくとも今はクラスです) があります。

実装:

(記事のスペースを節約するために 3 つのボディを削除しました)

さて、私がそれを使用するとき、たとえば、「creature」というクラスで、「creature」のヘッダーに customUtils.h ファイルを含めます。cUtil::func_name() のように 4 つの関数のいずれかを使用します。次のような未解決の外部エラーが発生することがあります

cUtil のすべての関数と、それらの関数を使用するすべてのクラスに表示されます。

私はそれが時々現れると言いました.それはそれをするだけだからです-私はプロジェクトを再構築し、それが再び現れるでしょう. もう一度スクラブするには、cUtils コードの一部を変更するか、他のクラスに含める方法や、再度実行できるようにする方法を変更します。しばらくの間、クリーニング -> customUtils.cpp のコンパイル -> 残りのビルドは機能しましたが、それ以上は機能しませんでした。

私のような訓練されていない目には、これは完全にランダムに見えます。Microsoft Visual Studio 2010 を使用しています。openGL と glut を使用したコンソール プロジェクトです。

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

opengl - CUDAプロジェクトのgluPerspectiveの未解決の外部シンボル

実際、これは一般的なリンクの問題であり、Visual Studio構成に#pragma(lib、 "glu32.lib")を追加するか、glu32.libを追加することで定期的に解決できます。

しかし、私の問題は奇妙で、上記の解決策は役に立ちません。

gluPerspectiveやgluBuild2DMipmapsなどのOpenGL関数を含むいくつかの追加ファイルをCUDAプロジェクトであるCUDASDKのVolumeRenderに追加しました。

コンパイル後、これらの余分なファイルがglu関数の未解決の外部シンボルエラーで発生することがわかりました。ただし、これらのglu関数を元のCppファイルに入れると、正常に機能します。

私はこれまでに上記の2つの解決策を試しましたが、役に立たなかった。誰かがこのパズルを解くためのヒントを教えてもらえますか?

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

c++ - Visual Studio 2010 でさまざまな C++ プロジェクトの関数を使用する方法は?

相互に対話できる Visual Studio 2010 の同じソリューションで 2 つの C++ プロジェクトをビルドしたいと考えています。ディレクトリの下にソリューションを作成しましたC:\Users\me\Desktop\SolutionDir。2 つのプロジェクトがそれぞれ および の下に作成されていC:\Users\me\Desktop\SolutionDir\FirstProjectますC:\Users\me\Desktop\SolutionDir\SecondProject

私の最初のプロジェクトには、ヘッダーfunction.hと cpp ファイルの 2 つのファイルが含まれていますfunction.cpp

関数.h

関数.cpp

私の2番目のプロジェクトにはメインファイルが含まれていますmain.cpp

main.cpp

C:\Users\me\Desktop\SolutionDir\SecondProjectにディレクトリを追加しましたConfiguration Properties > C/C++ > General > Additional Include Directories。私はまだ古典的なエラーを受け取ります:error LNK2019: unresolved external symbol関数を呼び出すときprint_stuff()

何か案は ?

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

c++ - WndProcを別のcppファイルに移動すると、「未解決の外部_WinMain@16」

Windowsアプリケーションの場合、最初に作成されたシングルトンクラスの一部として取得しようとしていますがCreateWindow()、関数をにシフトしようとしてから、「未解決の外部シンボル_WinMain@」を取得し続けています。 16"。それらは元々グローバル関数であり、すべてが正常にコンパイルされていたので、それらをGameHandlerに移動することにしました。それ以来、それらをに戻そうとしても、未解決の外部関数しか得られません。WndProc()_tWinMain()GameHandler.hGameHandler.cppmain.cppmain.cpp

私はVS2010でこれを行っていますが、プロジェクトはWindowsアプリケーションとして作成されており、プロパティに特定のエントリポイントが設定されていません(これまでに見つけたすべてのソリューションは、コンソールアプリであるためだと言っているので、再確認しました。これはそうではありません。 t)。

私が現在持っているコードを以下に示します。実際のプロジェクトには、関連性がないと思うので省略した数千行の他のコードがあります(ただし、幸いにも間違っていることがわかります。実際のウィンドウ作成コードは関連していますが、コード自体はないと思います。問題は(私が残したものは別として)、GameWindowProc()および/またはCreateGameWindow()の場所、またはそれらの呼び出し方法です。実際のウィンドウ作成コードは、NeHeのチュートリアルから取得されます。次のコードのみをコンパイルしようとしています。前述の未解決の外部を与えます。

main.cpp:

GameManager.hで:

GameManager.cppで:

main.cppご覧のとおり、GameManager内またはその一部としての厄介な関数を切り替えるために、いくつかのプリプロセッサ条件を設定しました。のグローバル関数としてそれらを持っている#define USEGMGR最初にコメントアウトします。GameManager.hmain.cpp

誰かが私が間違っていることを教えてもらえますか?

編集:実行すると終了できないというコメントを削除しました。

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

c++ - 未解決の外部が原因でOpenCVがコンパイルされない-LNK2019

私はOpenCVを初めて使用し、Visual Studios2010Ultimateでセットアップしようとしています。私はドキュメントに正確に従い、それが言ったようにファイルをリンクしました。これが私が使用している追加のライブラリです:

そして、それらのすべてのリリースの対応物。ただし、提供されたサンプルコードをデバッグおよびコンパイルしようとすると、次のエラーが発生します。(プロジェクトが正しく機能するためには、プロジェクトをコンパイルして公開する必要があることをどこかで読みましたか?それも本当ですか?)

私はすべてのディレクトリを調べて、ライブラリが実際にOpenCVファイルに存在し、ダウンロードが破損していないことなどを確認しました。どんな助けでもいただければ幸いです!

-Logantf17

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

templates - テンプレート エラー: 未解決の外部クラスと内部フレンド クラス

テンプレートを使用して二分探索木を書いています。アイデアは、同じタイプのそれを継承する他のクラスと比較するために使用される仮想演算子オーバーロード関数を持つ純粋な抽象基本クラスがあるということです。このクラス、またはそれを継承する任意のクラスは、BST の「キー」を表します。

良い例は、最初にこれを使用して計画していることです。これは、シェーダー ソース (シェーダー ファイルから解析された文字列) を BST に値として追加することですShaderComparable。シェーダーであり、BST 内の主要な比較に使用されます。

問題は、コードを書いているときは問題なくコンパイルできるのに、メインに BST クラスのインスタンスを貼り付けて実行しようとするとすぐに、リンクの「未解決の外部」エラーが発生することです。

コード

SearchTree.hpp

SearchTree.cpp

ソースにはさらに多くのコードがありますが、あいまいさを避けるために、すべてを投稿したくありませんでした。イテレータの定義は通常、次のようなものです。

エラー

質問

これらのエラーが発生するのはなぜですか? これらを止めるにはどうすればよいですか?

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

c++ - externを使用したグローバル変数宣言

私の問題は次のような状況にあります。

file1.h

file1.cpp

ここでgraph_wnd_sensor1Dには値があり、ShowWindowは機能します

ファイル2.h

ここで、initでは、graph_wnd_sensor1Dに前の情報と同じ情報がないため、アプリがクラッシュします。

ファイル2.cppで、graph_wnd_sensor1Dを使用したいと思います。しかし、視覚的な収量

  • したがって、graph_wnd_sensor1Dをfile1で宣言されているグローバル変数にするという考え方です。どうすればこれを解決できますか?*
0 投票する
1 に答える
4054 参照

visual-c++ - エラーLNK:仮想関数に起因する未解決の外部シンボル

コードをコンパイルするときのエラーは次のとおりです。ここでコードを共有できないことをお詫び申し上げます。参考までに、私は外部ライブラリを使用していないので、これらのリンカーエラーについてはよくわかりません。DeviceManagerそれらは私がクラスで宣言した仮想関数から来ているようです。それぞれの実装は、他の2つのクラスにあります。

誰かがこれらのエラーで私を助けることができますか?

アップデート1(可能な解決策):

問題は、クラスで宣言された仮想関数DeviceManagerが純粋仮想ではなく、クラスの定義を持っていないこと.cppが原因のようDeviceManagerです。

DeviceManagerクラスに非仮想関数がない場合は、仮想関数を純粋にすることが解決策になります。このようなものvirtual void testFunction();は純粋ではないので、に変更することvirtual void testFunction()=0;が解決策です。このためには、この仮想関数の定義を、クラスを継承する他のDeviceManagerクラスに実装するだけで十分です。このような場合、DeviceManagerクラスは抽象化されるため、インスタンス化できません。

しかし、私の場合、DeviceManagerクラスにはいくつかの非仮想関数もあり、非仮想関数を呼び出すためにインスタンス化する必要もあります。したがって、解決策は、クラスを継承する他のクラスでの宣言と定義とは別に.cpp、クラスので仮想関数の定義を実装することです。DeviceManagerDeviceManager

0 投票する
0 に答える
434 参照

c++ - 未解決の外部シンボルを引き起こす C++ ランダム序数の追加

私はVisual C++ 2010が何をしているのか理解できません。何時間もグーグルで検索しましたが、何が起こっているのかまだわかりません。私が得ることができるどんな助けでも本当に、本当に感謝します。

関数をインポートする DLL があり、通常の動作をすべて実行しました。DLLから.lib ファイルを作成し、ヘッダー ファイルをおよびで作成しました。extern "C"__stdcall

それでも、私のすべての努力にもかかわらず、コンパイラはまだ不平を言っています:

これが本当のキッカーです。序数が見えますか? @4<-- コードのどこにも明記していませんが、VC++ は数字の 4 が好きだと判断しただけです。DLL では、関数 Connected は実際には序数 11 としてリストされており、4 ではありません。

.lib ファイルで関数を序数 4 に変更すると、プロジェクトはコンパイルされますが、Connected が 11 としてリストされているため、DLL は文句を言います。

NtDirect.dll のBinDump:

main.cppのコード:

ninja.hの宣言: (スペースを節約するために接続のみを表示)

Export in NtDirect.def : (序数を指定せずに AND でこれを試しました。)

すでに試した:

Connected@11ANDを含む .def ファイルの両方から .lib を構築しますConnected。Connected 以外の機能も試してみましたが、機能しません。インポート宣言をいじってみました(追加と削除extern "C")。

また、DLL が実行可能ファイルと同じフォルダーにあることも確認し、リンカーに NtDirect.dll を追加してアクセスできるようにしました。

Windows 7 64 ビットを実行しています。