2020年3月25日水曜日

Taglibの使い方 1 Qtへの組み込み


基本

ライブラリをstaticに使うかdynamicに使うかでTaglibのビルドもQtへの組み込み方も違う
staticに使う場合は使うプログラムに組み込んでしまうのでやや実行ファイル(exe)が大きくなるが、外部のdllは不要
逆にdynamicに使う場合は実行ファイルは小さくなるが実行ファイルのパスが通ったところにdllが必要になる

staticに使う











①Tglibのビルド~MSVCでフォルダを開いてデフォルトのままビルドしてインストールすれば、installフォルダの中に tag.lib とヘッダ類をまとめて置いてくれる。libはdebugで30MB、releaseで25MBと結構大きいです。
②QtCreatorへの組み込み~プロジェクトの右クリックからライブラリの追加を選択して、staticにチェックしてパスを設定する。proファイルに必要なコードが追加される。

dynamicに使う

①Tglibのビルド~ここで書いたとおり。
https://isoroku68.blogspot.com/2020/03/quazip-taglib-qt-c.html
cmakeでdllを作成するように設定する。生成されるのはtag.libとtag.dll、ヘッダ類。このtag.libはstaticで作ったtag.libとは別物で1MB無いです。
②QtCreatorへの組み込み~基本はstaticの時と同じだが、staticではなくdynamicにチェックを入れる(これがデフォルト)
③Qtでのビルドはこれで通るがdllをパスの通ったところに置いておかないとexeの起動は失敗します

雑感

TaglibのビルドはMSVCさえあればwin環境で問題なくできます
ライブラリの使い方を正しく理解してQtに組み込みましょう
私は二種類の違いを理解せずにいろいろやって時間がかかってしまいました
個人的にはlibファイルについて、staticでもdynamicでも必要になるけど中身は全然違うってのが問題あると思います
わかりづらいと思う
私だけ??(笑)

補足

dynamicに使う選択肢として、ライブラリ(dll)をdyanmicにロードする方法もあります
アプリの中でたまにしかtaglibを使わないような場合はこうした方が良いと思います
その場合はそもそもQtのプロジェクトにライブラリを追加する必要はありませんが、プログラムの中でtag.dllを読み込むコードを書くことになります
winだと loadLibrary になりますがQtでは QLibrary を使うらしいけど私はQtのやり方はわかりません┐('д')┌
使い方はいろいろですね

0 件のコメント:

コメントを投稿