問題タブ [undefined-reference]

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 に答える
848 参照

undefined-reference - メークファイルまたはヘッダー ファイルに関する単純な問題ですか?

私は以下を使用してコンパイルするプログラムを持っています:

Attribute.cpp にはそのヘッダー ファイル Attribute.h が含まれており、Attribute.cpp には Attribute.h のすべての実装が含まれています。

Entity.cpp は Attribute クラスを使用するため、Entity.cpp にはヘッダー ファイル Entity.h および Attribute.h が含まれます。

main.cpp ファイルには XML.h というヘッダー ファイルが含まれており、属性ヘッダーとエンティティ ヘッダーの両方が含まれています。

問題は、main.cpp と Entity.cpp で使用される関数への未定義の参照を取得し続けることです。

これらの関数の実装は対応する cpp ファイルに記述されているため、これらの関数が定義されていることはわかっています。Entity.cpp と Attribute.cpp。

ありがとう。

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

actionscript-3 - Actionscript 3ディクショナリは、別のクラスで設定されたばかりのキーに対して未定義/nullを返します

次に示すように、指定された XML 要素に応じて表示オブジェクトをステージにレンダリングしています。

PageRenderer.as

したがって、各 XML 要素には、関連付けられたレンダリングされた形状があります。XML 要素がある場合は、次のように形状にアクセスできます。 var shape:DisplayObject = curElements[xmlElement];

これは、同じクラス内で正常に機能します。

ただし、今では、形状の選択を処理し、形状で行われたアクションを xml 要素に反映する ElementSelector クラスもあります。これを行うには、形状がクリックされたときに XML 要素を取得する必要があります。

ElementSelector.as

StageClicked イベント関数のみを追加したので、私の手順がどのように機能するかがわかります。その機能自体は正常に動作します。問題は select() メソッド内にあるようです。

ここで奇妙なことに、curElements[element] は undefined を返し、render は null を返します。

私はこのようにデバッグしようとしました(selectメソッドの一番下):

戻り値:

なぜこうなった?a === b なら、dic[a] === dic[b] ですね。まあ、どうやらそうではありません。

それで、キーは本当にそこにあります...そして、それは設定されたキーと同じです。

連想表示オブジェクトを返さないのはなぜですか?

0 投票する
4 に答える
7603 参照

c++ - C++ リンカー エラー、共有オブジェクトから参照する必要があるアイテムへの未定義の参照

ゲームの構築を支援するために、physgameengine と呼ばれるライブラリを構築しています。このゲーム ライブラリは、ライブラリ ファイル libOgreMain-1.6.5.so、libBulletCollision.a、libBulletDynamics.a、libBulletSoftBody.a、libSDL-1.2.so.0 にある Ogre3d、Bullet Physics、SDL などの複数のライブラリとリンクしています。 . この Library/Shared オブジェクトは、GCC と Code::blocks を使用して、Ubuntu 9.10 で問題なくビルドされているようです。mingw と Code::blocks を使用して Windows で問題なくビルドできます。

ウィンドウでは、ビルドしたライブラリを使用してコンパイル/リンクするゲームを作成できます。これらのプログラムは実行され、期待どおりに動作します。Ubuntu で、このライブラリを使用するゲームをコンパイル/リンクしようとすると、多くの未定義の参照エラーが発生します。しかし、私が構築したライブラリ内の関数やオブジェクトではなく、私のライブラリが呼び出すアイテムに対してです。これは私が得るエラーの例です。

コードの大部分は、Windows と Linux で同じであり、同等のコンパイル/リンカー設定があるようです。しかし、Linux ゲームは、私のライブラリがリンクすべき元のライブラリにリンクしているようです。何が起こっている?それを修正する方法についてのアイデアはありますか?

0 投票する
5 に答える
14172 参照

c++ - C++: シングルトン クラスのインスタンスへの未定義の参照

現在、ファクトリをシングルトンとして実装しようとしています。シングルトン パターンの教科書の例を実際に使用しました。.h ファイルは次のとおりです。

.cpp ファイルは次のとおりです。

コードはコンパイルされますが、リンカー エラーが発生します。

../../lib/oxygen/liboxygen.so.3.2.4: `oxygen::ImpFactory::mInstance' への未定義の参照

これには現在、3人の学生が困惑しています。何か案は?

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

qt - Qt アプリを静的ライブラリにリンクしようとしたときの未定義の参照

MinGW で構築した静的ライブラリがあり、Qt アプリケーションからそのライブラリにリンクしようとしています。ライブラリ内のオブジェクト ファイルの 1 つが原因でリンカー エラーが発生し続けます。このファイルは、実際には 2 つの Boost ヘッダーを宣言しています。1 つは shared_ptr を使用するためのもので、もう 1 つはクラスをコピー不可にするためのものです。このブースト機能の使用が問題の原因であると考えていますが、その理由はわかりません。ファイルで定義されたクラスを使用する Qt アプリのクラスをコメントアウトすると、Qt アプリは正常にリンクします。これは、出力のエラー部分です。

C:\blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp:(.text+0x10a): `__gxx_personality_sj0' への未定義の参照

C:\blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp:(.text+0x12f): `_Unwind_SjLj_Register' への未定義の参照

C:\blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp:(.text+0x203): `_Unwind_SjLj_Resume' への未定義の参照

C:\blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp:(.text+0x20e): `_Unwind_SjLj_Unregister' への未定義の参照

C:\blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp:(.text+0x226): `__gxx_personality_sj0' への未定義の参照

C:\blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp:(.text+0x24b): `_Unwind_SjLj_Register' への未定義の参照

C:\blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp:(.text+0x31f): `_Unwind_SjLj_Resume' への未定義の参照

C:\blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp:(.text+0x32a): `_Unwind_SjLj_Unregister' への未定義の参照

C:\blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp:(.text$_ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_[boost::detail::shared_count::shared_count(foo::foo_SomeClassImpl*)] +0xc): `__gxx_personality_sj0' への未定義の参照

C:\blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp:(.text$_ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_[boost::detail::shared_count::shared_count(foo::foo_SomeClassImpl*)] +0x31): `_Unwind_SjLj_Register' への未定義の参照

C:\blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp:(.text$_ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_[boost::detail::shared_count::shared_count(foo::foo_SomeClassImpl*)] +0xfb): `_Unwind_SjLj_Resume' への未定義の参照

C:\blah\build\windows\mingw\libfoo.a(foo_ctis.cpp.obj):foo_ctis.cpp:(.text$_ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_[boost::detail::shared_count::shared_count(foo::foo_SomeClassImpl*)] +0x106): `_Unwind_SjLj_Unregister' collect2 への未定義の参照: ld は 1 つの終了ステータスを返しました

言及すべきもう 1 つのことは、このクラスの実装へのポインターを使用していることです。どんな助けでも大歓迎です。

解決済み: MinGW が GCC バージョンを提供する前に、古いバージョンの GCC がパスに含まれていることがわかりました。古いバージョンは、しばらく前に持っていた GNUStep パッケージに含まれていました。これらの異なるバージョンの構成が問題を引き起こしていると思います。問題を解決するために正しい軌道に乗っていた kemiisto に感謝します。

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

curl - curlpp を使用してコンパイルするとエラーが発生する

最初の簡単な例をコンパイルしようとしましたが、コンパイル エラーが表示されます: undefined reference to `curlpp::Cleanup::Cleanup()'

私が書いたリンカーオプションcurl-config --libsで、コマンドラインで

$ curl-config --libs

-lcurl

私は何を間違っていますか?

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

c++ - への未定義の参照

opengl/qt3 の割り当てを行っていますが、未定義の参照エラーが発生しています。

しかし、コンパイラは未定義の参照として行 mesh.load("ball.obj") について不平を言います...何が起こっているのですか? 前もって感謝します!

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

c++ - MinGW / G ++/g95リンクエラー-`MAIN_'へのlibf95未定義の参照

要約すると、私の問題は、C++アプリケーション内でg95オブジェクトをコンパイルすることにあります。実際、私は古いFortranプログラムのインターフェースを構築しています。このタスクでは、wxWidgets GUIライブラリを使用しており、必要に応じてfortranサブルーチンを呼び出しています。最初は、プロジェクト全体を開発して、Fortranファイルをgfortran(GCCに付属)でコンパイルし、g ++-o...コマンドでアプリにリンクしていました。すべてが正常に機能していましたが、私のfotranサブルーチンによって計算されたいくつかの数値はNAN値を返しました。調査を行ったところ、fortranファイルを-m32フラグを指定したgfortranでコンパイルすると、このNAN値の問題が発生することがわかりました。-m64フラグを使用してコンパイルしていますが、私のコードは正しく機能します。ここでの唯一の問題は、アプリが32ビットである必要があることです。その後、別のコンパイラを試しました。ここで私はg95Fortranコンパイラーを見つけました。これは私のfortranコードをコンパイルし、32ビット環境で正しい出力を提供します。しかし、これらのg95オブジェクトをプログラムにリンクしようとすると、次のエラーが表示されます。

C ++との統合に関するg95マニュアルをすでに読んでおり、実際には、Fortran環境を制御するために次の関数を呼び出しています。voidg95_runtime_start(int argc、char * argv []); void g95_runtime_stop();

また、g95Fortranランタイムライブラリlibf95.aとlibgcc.aをリンカーコマンドに含めました。最後に、これはwxWidgetsによって管理されているため、mainメソッドを実装していません。また、これはfortran関数を呼び出すC ++プログラムであるため、fortranサブルーチンにmain関数を含めることはできません。

皆さんの何人かはこの問題で私を助けてくれますか?MAIN__問題へのこの未定義の参照を修正するにはどうすればよいですか?どんなアイデアでも大歓迎です。

0 投票する
4 に答える
8933 参照

c++ - への未定義の参照

コンパイルを試みるたびにこのエラー メッセージが表示され、何が問題なのかわかりません。どんな助けでも大歓迎です:

コード:



私は自分がやるべきだと思うすべてのことをやっています。main.cpp はまだ完成していません。最初に add 関数を機能させようとしているだけです。どんな助けでも大歓迎です。

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

c++ - Linuxでのライブラリファイルの使用

/lib/libproc-3.2.6.soUbuntuディストリビューションのライブラリにある関数のいくつかを使おうとしています。

ヘッダーファイルをダウンロードしてインストールしました。これらはソースファイルで定義されています。

現在、これが私がやろうとしていることのすべてです、初心者のためだけに...

しかし、次のコンパイラエラーが発生します。

コンパイルに使用しているコマンドが間違っている可能性があることは承知していますが、経験不足のため、何が間違っているのかわかりません。これは、cppファイルをコンパイルするために使用しているg++コマンドです。

誰かが私がどこで間違っているのかについていくつかの指針を教えてくれませんか。