質問

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

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

チャートを描画するChartDirectorというAPIを使用しています。ライブラリをこの方法でリンクしたことは一度もありません(通常はVisual Studioを使用してリンクします)。エラーのリストは非常に大きいため、すべてをリストすることはしませんが、表示されるリンカーエラーのタイプを明確にするためだけにリストします。

(.text

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

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

チャートを描画するChartDirectorというAPIを使用しています。ライブラリをこの方法でリンクしたことは一度もありません(通常はVisual Studioを使用してリンクします)。エラーのリストは非常に大きいため、すべてをリストすることはしませんが、表示されるリンカーエラーのタイプを明確にするためだけにリストします。

<*>

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

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

コンパイル行のどこがおかしいのですか?

ZN9BaseChartD1Ev[BaseChart::~BaseChart()]+0x4f): undefined reference to '_CBaseChart_destroy'

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

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

コンパイル行のどこがおかしいのですか?

役に立ちましたか?

解決 3

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

他のヒント

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

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

以前はそのライブラリを使用したことはありませんが、グーグルして、 -lchartdir50 ではなくrel =" nofollow noreferrer ">-lchartdir なので、試してみてください。

libもgccで作成されたと仮定しています。

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

次のように、コマンドラインで別のファイルとして使用するだけです

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

hth。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top