2012/02/18

[qt]mingw版でライブラリをビルドしたときの.aは.libと同じようだ

Qtでシリアルポートを操作できるクラスがあったので、それを使おうと考えている。
最近、Qt4.8(mingw)をインストールしたので、ビルドさせた。
.dllと.aができた。

では、サンプルを動かそう。
サンプルの.proをQtCreatorで見ると、QSerialDeviceでビルドしたものではなく、ソースをそのまま取り込んでいるようだ。
せっかくなので、ビルドした.dllで動かしたい。

QtCreatorでライブラリを使う、を参考に外部ライブラリを追加しようとしたのだが、そこでは.dllではなく.libを要求される。
.dllから.libを作るには、Microsoftのlib.exeとか.defファイルとかいるようなので、めんどくさい。
一度に何とかできないものかと調べていたが、なんかはっきりしない。
mingwのページを見ると、こういうのがあった。
dlltoolというもので、インポートライブラリを生成する、と。
そのファイル名が、どうも.aっぽい。

では、と生成された.aファイルを.libにリネームして、QtCreatorの外部ライブラリとして選択すると、うまくいった。
ビルドもできた。
ということは、単にファイル名が.aになっているだけで、.libを同じ扱いにしてもいいのかもしれない。


ここから先は、libとは関係ないことだ。

 

QSerialDeviceのところをよく読むと、将来的にQtSerialPortってのになるだろう、といっている。
標準に組み入れられるのであれば、そっちの方が望ましい。
Qt4.8のソースを検索したけど、なかった。。。
このリポジトリは更新しない、みたいなことを書いているけど、そのわりには更新頻度が高い。
Googleで「QtSerialPort addon」とかで検索すると「もしかしてQextSerialPort?」などと言われる始末だ。
さっき試すと、QextSerialPortもビルドできたので、どっちでもいい。


まあ、シリアルポートでやることは限られているので、I/Fもクラスが違ってもそうそう変わるものじゃないだろうから、あまり深く気にしない方がいいかな。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。