問題タブ [undefined-symbol]

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

xcode - Xcodeで、リンクエラーを回避するために、プロジェクト設定で正しいライブラリを指定するにはどうすればよいですか?

XCodeプロジェクトをビルドしようとすると、未定義のシンボルエラーが発生します。これは、リンカーがライブラリを見つけられないためだと確信しています(curses.h btwを使用するために必要なライブラリです)。ターミナルプログラムを書いています。私が得ているエラーは次のとおりです。

そして、問題のあるコード行は次のとおりです。

これはあなたたちの何人かにとって簡単なはずです。プロジェクト設定で適切な場所を見つけ、そこに何を配置するかを知っておくと、非常にありがたいです。

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

c++ - C++ コードをコンパイルして、コンパイル済みの C コードとリンクするにはどうすればよいですか?

Cmockeryを使用して、テスト中の C++ コードから呼び出される C 関数をモックできるようにしたいと考えています。そのためのステップとして、Cmockery の例の名前をrun_tests.cから run_tests.cpp に変更し、コンパイルして cmockery.c とリンクしようとしています。

最初の 2 つのコマンド ライン (コンパイル用) は成功していますが、最後のコマンド ラインの後は次のようになります。

その未定義のシンボルは、run_tests.cpp の 29 行目からのものです。

run_tests() 関数は cmockery.c で定義されています。

「「gcc」を使用した C++ コードのリンク (g++ なし) 」を読んだ後、次のことを試しました。

しかし、同じ結果を得ました:

C++ コードをコンパイルおよびリンクして、C コード内のシンボルを検出するにはどうすればよいですか?

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

c++ - 静的ライブラリの SWIG Python ラッパーをコンパイルしますか?

これは初心者の質問です。SWIG を使用して C++ ライブラリの python インターフェイスを作成する方法を学ぼうとしています。ライブラリは独自のサードパーティ ライブラリです。ヘッダー ファイル (foo.h) と静的アーカイブ (libfoo.a) の形式で届きます。

問題を単純化するために、同じ病状があると思われる例を作成しました。とにかく同じエラーメッセージ。

参考までに、foo.c を示します。実際のサードパーティ ライブラリのヘッダー ファイルとアーカイブ ファイルしかありません。

このライブラリを入力して作成しましたg++ -c foo.cxx && ar rcs libfoo.a foo.o

私の SWIG インターフェイス ファイルは次のとおりです。

入力して foo_wrap.cxx を生成します

そしてコンパイルします。

コンパイルは成功しますが、Python と を実行するとimport foo、未定義のシンボル エラーが発生します。

何が起きてる?問題は、リンクのステップでコンストラクター TC::TC の定義が見つからないことです。

注:リンク手順を次のように変更すると

その後、すべてが機能します。しかし、これは生のソースコードを持っていない私の本当の問題に対するオプションですか? .a から .o を抽出できますか? おそらく手動でこれを行うことができますが、それを行う自動化された方法があるべきではありませんか?

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

c++ - ライブラリ間の依存関係を判断する方法は?

私のプロジェクトは、いくつかの静的ライブラリで構成されており、最終ステップでリンクされています。ライブラリのリンク順序が重要であるという問題があります(そうしないと、未定義のシンボルリンカエラーが発生します)。リンクされたライブラリ (-lcommon -lsetup -lcontrol など) を再ソートする必要があるという問題が発生することがあります。現時点では、再ソート、コンパイル、エラーのチェック、再ソート、コンパイルなどの愚かな試行錯誤です。

そこで、ライブラリ間の依存関係を示し、リンクするライブラリの順序を生成する小さなプログラムを作成しました。nmから定義済み ('T'、'B' など) および未定義のシンボル ('U') を読み込み、弱いシンボル('w'、'W'、'v'、'V')をnmから削除します。 「未定義のシンボル リスト」。現在、未定義のシンボルごとに、それを解決するライブラリを決定します。

しかし、私のプログラムは循環依存関係を示しています...私の間違いは何ですか?

それらが本当に存在する場合、私はまったくリンクできませんでした...それで、nm出力を分析するときに何が欠けていましたか? または、これらの依存関係を取得するために nm 出力を分析する方法はありませんか?

0 投票する
6 に答える
11169 参照

c++ - 構造体/クラス内の静的定数の奇妙な未定義のシンボル

以下のコードでは、リンク時にFoo::AとFoo::Bのシンボルが未定義になっているため、非常に疲れているか、気付いていない奇妙なことが起こっています。これは、より大きなプロジェクトから可能な限り最小限に抑えられていますが、私が見ているものの本質を示しています。

std :: min関数テンプレートがなくても正常に機能します。つまり、Foo::Aを返すだけです。また、クラス/構造体の外部で静的intを定義する場合も問題ありません(この単純なケースではグローバル)。ただし、このように内部に入るとすぐに、リンカはそれらを見つけることができません。

誰かが何が起こっているのか説明できますか?

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

c++ - ライブラリのロードに失敗しましたが、参照ライブラリからシンボルを使用できます

ベンダーの C++ ライブラリ用の Python バインディングを作成しようとしています。進んでいますが、かなりつらいです (ライブラリのソースがないことも一因です)。

現在、gcc (4.4.4) は、見つからないいくつかの例外クラスについて不平を言っています。

ただし、libFOO_Elsewhere (objdump -x を使用) で _ZTIN3foo4some22SomeExceptionE を見つけました。これは、同じ /home/djc/foo/lib/ ディレクトリにあり、コンパイラ呼び出しで -l スイッチを使用して既に参照されています。

LD_DEBUG=all は次のように報告します (提案してくれた Erik に感謝します):

ただし、objdump -p は libFOO_Sessions.so について次のように報告します。

libFOO_Elsewhere (_ZTIN3foo4some22SomeExceptionE を含む) も、libFOO_Sessions の NEEDED エントリに含めるべきではありませんか?

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

compiler-errors - DおよびSDL-未定義の関数

私はこの非常に単純なDプログラム(pk.d)を持っています:

非常に単純なmakeスクリプトがあります(ここではWindowsを使用していますが、Windows Dコンパイラにはbashインタープリターがパッケージ化されています)。

しかし、私がそれを構築するとき、私は得ますError 42: Symbol Undefined _SDL_Init

SDLを正常にインポートでき、SDL_INIT_VIDEOは問題なく検出されました。先に進んでSDL.dをチェックインしたところ、SDL_Initの定義があることがわかりましたint SDL_Init(Uint32 flags);。私はこれを理解することはできません。これは私がDでインポートした最初の非STLライブラリなので、うまくいけば私の間違いは明らかです、誰かがそれを見ることができますか?

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

java - JNI バインディング - 未定義のシンボル: gcj_personality_v0

一部の Java コードから C++ ソース (画像処理アルゴリズムのオープン ソース実装) にリンクしたいので、有効な C JNI バインディングを C++ に変換しようとしています。これには、Java クラス、JNI バインディングの C バージョン、およびビルド システムが含まれ、C++ ソースの使用は除外されます。

現在、JNI バインディングを C++ に変換しようとしています。これにより、C++ ソースをビルド システムに追加してバインディングから呼び出すことができますが、未定義のシンボルが発生しています。

私の Makefile は非常に簡単です。

したがって、ヘッダー ファイルは で自動的に生成され、 からにjavahコピーするときに破損していないようです。この投稿でガイドされているように、.cpp ファイルにブロックはありません。.h.cppextern "C"

この投稿のガイドに従って、プラグマも含めました: Undefined Symbol _gxx_personality_v0 on link。プラグマは#pragma GCC java_exceptions

現在、その未定義のシンボル (gxx_personality) は Web 上でよく参照/文書化されているようです。多くの投稿が、このプラグマの使用を提案するC++/Java 例外処理に関するこのコメントを指摘しています。ただし、そのプラグマを含めた後、十分にカバーされていない別の未定義のシンボルを取得します (正確に 1 つの Google ヒットを取得します)。_gcj_personality_v0

この未定義のシンボルをどうすればよいかわかりません。他にどこを向くべきかわかりません。おそらく、この問題を取り除くために修正できる私の JNI コードの間違いでしょうか? 完全を期すために、私の JNI C++ コードを以下に示します。

ご覧いただきありがとうございます。あなたの助けに感謝します。

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

iphone - EventKit を使用しようとすると「未定義のシンボル」が表示されますか?

doco & SimpleEKDemo アプリケーションに基づいて EventKit を使用しようとしていますが、次のような単一のエラーが発生します。

このエラーの意味と、トラブルシューティングに推奨される手順 (このようなリンク エラーが発生したのは初めてで、少し迷っています。自分のコードとサンプル コードを解析しましたが、何も表示されません。明らかな違い)。

コントローラーのヘッダー ファイルで、私が持っているイベント キット コードを使用していることに注意してください。

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

python - Python 用の C++ MPI モジュールの作成、インポート エラー

C++ ライブラリをラップする Python モジュールがあります。ライブラリは MPI を使用し、mpicxx でコンパイルされます。一部のマシンではすべてがうまく機能しますが、他のマシンでは次のようになります。

そのため、MPI ライブラリからの未定義のシンボルがあります。私が知る限り、mpicxx はすべてをリンクする必要がありますが、そうではありません。理由はありますか?