C ++ GNUリンカーエラー
-
05-07-2019 - |
質問
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。