最初は:ではないはすでにコンパイルされたライブラリを使用しています。ここでEclipse-CDT/C++:正しい.oファイルが作成されてリンカーに渡されても、未定義の参照エラーが発生する
状況だ:
project
somefoldername
src
include
library
src
include
somefoldername/srcとライブラリ/ srcにソースフォルダとsomefoldername /として含めるように定義されています。私は、C++のようなフォルダ構造を持っている日食CDTプロジェクトを持っていますライブラリ/インクルードはincludeフォルダ(C/C++ General-> Paths and Symbolsの下にあり、コンパイラ-Iオプションにも影響します)として定義されています。
"library"フォルダには、自分のコードで使用されているライブラリのソースコード( "somefolder"にあります)が含まれています。さて、プロジェクト全体のコンパイルはうまくいきますが、リンクは、ライブラリのソースの "未定義の参照"エラーの一揃いとクラッシュします。
未定義の参照エラーが発生しますが、見つからない関数が見つかるはずの* .oファイルが作成され、後でリンカに渡されます。
私は間違っていますか?
編集:現在の設定と問題の解決方法に更新されました。
編集2:受け入れられた回答は少し助けになりましたが、最大の問題は「すべてを一括してリンクする」 - ポリーシィとエクリプスのようでした。私はautoconfに行き、主なアプリケーションにリンクする前にまずライブラリを構築しました。それはより多くの作業ですが、よりクリーンなアプローチです。
Q:あなたはまだこれを解決した – paulsm4
最後に、はい、私は一緒にライブラリの作者で、それを介して行ったいくつかのエラーは、ライブラリが期待される定義から来ました?。。あなたのポイント1を作ったソースコードを部分的に正しいものにするために作られたものですが、奇妙なものはまだほとんど残っていませんでしたので、私は通常のGCCツールチェーンからautoconfへ行き、ライブラリを別々に作りましたそれを全部につなぐために。これはどういうわけかトリックでした。おそらくすべての.oファイルを一度にリンクすると問題につながるでしょう。だから、それは "extern C"の部分ではありませんでしたが、あなたの最初の推測は問題の一部を解決しました。 – aRestless