2016-11-20 12 views
2

libxlsxwriterを使用してMS Excelとやりとりするプログラムを作成しようとしています。私はMingw-w64でMSYS2を使ってアプリケーションをビルドしています。私がgccの64ビット版で自分のコードをコンパイルしようとすると、すべてがうまく動作します。しかし、gccの32ビット版でコンパイルしようとすると、私が使用するすべての関数に対してこのようなエラーが発生します:C:\msys64\tmp\ccknaH4k.o:main.cpp:(.text+0x16): undefined reference to 'workbook_new'。どうなり得るか?libxlsxwriterでプログラムをビルドするときに[...]への未定義参照

答えて

1

ライブラリは、32ビットではない、あなたはそれを32ビットのバイナリをリンクしようとするので、リンカは64ビットのシンボルを見つけることができるだけである、唯一の64ビットのために構築されているように見えます個です。

これを解決するには、32ビットバージョンのライブラリをコンパイルまたはダウンロードする必要があります。

+0

ライブラリは、32ビットシステムと64ビットシステム用です。ライブラリを使用するには、そのライブラリを構築する必要があります。私はMINGW32シェルを使用し、 'make 'と' make install'を使って再度コンパイルしましたが、同じ結果が出ました。別の奇妙なことは、コンパイルされたライブラリはデフォルトでは 'C:\ msys64 \ usr \ lib'に置かれていて、32ビットgccを使いたいのであれば、' C:\ msys64 \ mingw32 \ lib'(これはMINGW64シェルでは起こりません)。 – sgrontflix

+0

@sgrontflix、32ビット用にビルドするときに正しい_(32ビット)ライブラリファイルに対してバイナリをリンクしましたか? – ForceBru

+0

私はこのコマンドを使用します---> 'gcc myexcel.c -o myexcel -lxlsxwriter -lz'を実行すると、ライブラリをコンパイルして実行可能ファイルにリンクすることができます。実際に32ビットライブラリをリンクしていることを確認するにはどうすればよいですか?私が愚かに聞こえるならば、私は残念ですが、私はこれらのことに新しいです。 – sgrontflix

関連する問題