>> 古い記事: Ruby(mswin32): net/http と zlib のエラー
<< 新しい記事: Ren'Py: options.rpy メモ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

雑ログ: minGW で libsndfileのビルド / int64_t でエラー

libsndfileをwindowsで使うべく、minGW でビルドしたときのメモです。 メモの日付は 2007-02-26。

使ったのはこれ。
http://www.mega-nerd.com/libsndfile/libsndfile-1_0_17.zip

中に入っている libsndfile-1.0.17.tar.gz を展開し、できたディレクトリに入って (MSYSで)普通に ./configure, make, make install しようとすると make のときに以下のエラーが出る。

utils.c: In function `hexdump_file':
utils.c:397: `int64_t' undeclared (first use in this function)
utils.c:397: (Each undeclared identifier is reported only once
utils.c:397: for each function it appears in.)

int64_t は stdint.h で定義されているので、 utils.c で include されている utils.h の先頭のあたりに

#include <stdint.h>

を追記して解決。 この方法で良かったのかどうかは不明。

make install でうまくインストールされてないようなので src/sndfile.h を mingw/include に手動コピー。

テスト用のコードを用意してコンパイルしてみると、エラー。

$ g++ -c foo.cpp
$ g++ foo.o
foo.o(.text+0x185):foo.cpp: undefined reference to `sf_open'
foo.o(.text+0x216):foo.cpp: undefined reference to `sf_format_check'
foo.o(.text+0x27f):foo.cpp: undefined reference to `sf_read_int'
foo.o(.text+0x313):foo.cpp: undefined reference to `sf_close'

.libs/libsndfile.a を MinGW/lib/ にコピーして「-lsndfile」を付けたら上手くいきました。 というか付けないとダメです。

$ g++ foo.o -lsndfile
[追記 20080901]
-lsndfile オプションを前に付けると以下のようなエラーが出るので、上記のように後ろに付ける。
$ g++ -lsndfile foo.o -o foo.exe
foo.o(.text+0x54):foo.c: undefined reference to `sf_open'
foo.o(.text+0x62):foo.c: undefined reference to `sf_close'
collect2: ld returned 1 exit status

>> 古い記事: Ruby(mswin32): net/http と zlib のエラー
<< 新しい記事: Ren'Py: options.rpy メモ
** ホームに戻る

コメント

コメントの投稿

管理者にだけ表示を許可する

|
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。