0

Eclipse で libxml2 を使用して C プログラムをコンパイルしようとしています。私のコードには問題がないように見えますが、プロジェクトをビルドするとエラーが発生します。

エラー出力は次のスクリーンショットにあります: https://drive.google.com/file/d/0BwV-0_2diIaaQlZHM2Fwa2R0LWc/edit

このエラーの前に「Undefined reference to」エラーが発生していましたが、ライブラリ libxml2 をリンクするのを忘れていたためです。これが問題のスクリーンショットです。どうしようもない。

-nostartfiles[編集]リンカーフラグを入れるだけで問題を解決しました。

4

2 に答える 2

0

私はあなたのソリューションが受け入れられるとは思わない.あなたのプロジェクトが他の環境で実行されたときに同じ問題につながると思う.あなたのプロジェクトで 1 回以上、おそらくライブラリで既に持っていたのと同じ関数を定義したからだと思います。

たとえば、hello() という関数を含む lib1.h があり、main.c (そのライブラリがリンクされている) に同じ関数を記述した場合、その問題が発生します。実際、あなたの画像では、「__data_startの複数定義」を見ることができます

したがって、問題のある関数名を変更するだけで修正されると思います。

さらに、この問題は、プログラムに同じライブラリを複数回含めると発生しますが、プリプロセッサを使用して解決できます (これに興味がある場合は、トピックから外れて私の答えになるので、ググってください)。長すぎる)

于 2015-10-28T11:22:39.087 に答える
0

I solved my problem I just need to write -nostartfiles in the Linker Flags box :D To find "Linker Flags" box go to Your Project > Properties > C/C++Build > Settings > GCC C Linker > Miscellaneous

That's it.

Thanks for help.

于 2013-11-14T14:56:59.547 に答える