Qtと沙織さんのお話。
Creatorも含めてQtでコードを書くと言うのは基本的にプラットフォーム依存を少なく出来る、と言う利点があると思うのだけど、実際は書いてると結構出てくる。別件で書いてるOpenGL周りのコードもQt+Creatorを使っているけど、そりゃあもうね。
なのだけど、saoriに関しては当初から「できるだけQtに依存して同一コードを以って特定環境で動かないところを無くしてみよう」と考えて書いております。まあ、いつまでこれ続けられるかは謎ですけどねえ。
結果、実は現状同じコードでWindows上でも動きます。
素敵ですねえ。
まあandroidは素晴らしいクライアントが存在するから試す気も無いし、アポー系は宗教上の理由で試す環境が無いのでWindowsしか試してませんが、Windwos10のノートPCで出先で思いついた修正をさくっと出来て試せるのはそれだけでも素晴らしいし便利ですねえ。
とは言え、既に問題は見つかっていて、例えばWindowsでQNetworkReply::readAll()が空な場合がある、とかね。色々調べた結果どうも一定データ量を超えるとダメっぽくて、最終的に落ち着いたのが「タイムラインの取得量(limit=で指定するんですが)を若干小さくすることで回避」だったりします。内部バッファ量の違いかなーと思ったりもするんですが、このへんはQtのコード見てみないとなんとも。Windowsの場合OpenSSL周りも別個用意してたりするわけだったりするのでこの辺の差もあるのかも。
もうひとつはまりかけたのが、変数長の違い。
statusのidを保存するのに最初longを使ってたのだけど、どうもWindowsだとおかしくなる、結局qlonglongに落ち着いたのだけど、後で気になってlimit.h見てみたら、linux(64)だとlong=longlong、Windows(64)だとint=long、うおおおい!って感じ。難しい。
まあどこまで頑張れるかは分かりませんが、一応Windowsでもコンパイルして動かしてみてますよと言うお話。