2

コンパイルコマンドを使用して、Cygwin経由でWindows上のプログラムをコンパイルしようとしています。

g++ ping.cpp -I./include -L./lib -lchartdir50

チャートを描画するChartDirectorというAPIを使用しています。私はこれまでこの方法でライブラリをリンクしたことがないので(通常はVisual Studioを介してリンクします)、これは少し新しいです。エラーのリストが非常に多いので、すべてをリストすることはしませんが、発生するリンカーエラーのタイプを明確にするために1つリストします。

(.text$_ZN9BaseChartD1Ev[BaseChart::~BaseChart()]+0x4f): undefined reference to '_CBaseChart_destroy'

これらはすべて、「xxx」エラーへの未定義の参照です。

./includeにたくさんのヘッダーファイルがあり、./libにchartdir50.libというライブラリがあります。

私のコンパイルラインの何が問題になっていますか?

4

4 に答える 4

1

うーん...それは奇妙だ。私は64ビットシステムを使用していますが、何らかの理由で32ビットライブラリで試してコンパイルしました。ありがとう!

于 2009-11-27T08:34:37.570 に答える
1

よくわかりませんが.lib、Visual C ++でコンパイルされていますか?

はいの場合、GCCと互換性がないと思います。ライブラリをGCC / G ++でコンパイルしてそのファイルを使用するか、ソースにアクセスできない場合は互換性のあるバイナリを使用する必要があります。

于 2009-11-27T06:11:53.443 に答える
1

私は以前にそのライブラリを使用したことはありませんが、グーグルで検索したところ、他の人が-lchartdir50ではなく-lchartdirを試していることに気づいたので試してみてください。

于 2009-11-27T07:32:36.713 に答える
0

libもgccで作成されたと思います。

AFAIK .libは静的ライブラリであるため、-lコンパイラスイッチで指定する必要はありません。

コマンドラインで別のファイルとして使用するだけです。

g ++ ping.cpp -I./include-L./lib{ここにlibへのパス}/chartdir50.lib

hth。

于 2009-11-27T07:26:18.283 に答える