2009-01-01から1年間の記事一覧

comdef.h の lstrlen が構文エラーになるときは(改)

コンパイラの出すエラーメッセージが、どこのどういう記述に起因し、どう修正すればいいのかを解読するのは、いつになっても難儀なものです。 1>C:\Program Files\Microsoft Visual Studio 8\VC\ce\include\comdef.h(240) : error C2589: '(' : スコープ解決…

ゾンビ対夕陽のプログラマ

Visual Studio 2005 + WTL 8.0 で、「WTL Mobile Appilication Wizard」プロジェクトの新規作成を、何度やっても「目的のファイルがゾンビ状態にあるため、そのデータにアクセスできません」という奇っ怪なダイアログが出る。 途方にくれたが、「ATL/WTL App…

WM6でRuby動かないことはないが

Target Earth というサイトに、ちょっと古いけれどRuby 1.8.6 のWinCE版が置いてありました。Console は設定ずみなのでインストールして動かしてみたのだけど、なぜか Ruby が終了すると標準出力がクリアされちゃってとても使いにくい。 起動するたびにかな…

画面に表示されてる画像をOpenCVに食わせようとしてハマった

まず、CBitmap インスタンスからビットマップデータを取り出す CBitmapT::GetBitmapBits が定義されてない。 Win32 APIだけど、CEでは使えないのだ。これはデータから直接抽出できる。CBitmap bmpImage に画像が入ってるとして、 DIBSECTION dibsection; ::G…

Windows Mobile エミュレータの挙動があやしいときは

WM6

OSの再起動をかけていないか、エミュレータのステートをセーブせずに終了してないか思い出そう。ライブラリのステップ実行できるようになったはずがいつのまにかダメになってて、さっき再起動した拍子にエミュレータを強制終了してたことに気がつくまでにち…

デバッグしたいコードにブレークポイントが設定できないときは

まずプロジェクトのプロパティで、構成プロパティ - リンカ - デバッグ の、「デバッグ情報の生成」がいいえになってないか確認しろ。ソリューション構成「Debug」でなんでデバッグ情報がいいえなのかさっぱりわからないけれど、とにかくそういうことがある…

やっとOpenCVが動いた……

やっとコンパイル通ったのにリンクすると 0x8007007e とかわけのわかんないエラーがでるのはWM6エミュレータに MSVCRT80.dll がないからだとか、cvLoadImage がちっともファイルを読まないのはワイド文字列のファイル名を受け付けないからだとか、cvSaveImag…

WTLとBoehm GCの組み合わせで……

gc_cleanup を継承したクラスの中で、 ::GetObjectType に失敗する。 デバッグモードだと、CPaintDC::SelectPen の内部で ::GetObjectType を呼び出すからアサーションにひっかかる。 リリースモードでも、明らかに SelectPen に失敗していて色がおかしくな…

WTL のサンプルを見てるのだが

主要なコードが全部 *.h に書いてあってトリハダが立った。ヘッダとソースの二重管理はおっくうだし、ヘマをした経験も山ほどある。 それはつまるところ40年前のコンピュータの上で、コンパイルを軽くするための仕様であって、今のPCならほとんど無意味なこ…

Boehm GC を Windows Mobile 6 用にコンパイル

C++ 用のガベージコレクタ Boehm GC を WM6 用にコンパイルします。 (WM6 エミュレータにコンソールをインストールする必要があります: 昨日の記事参照)(修正: CE_MAKEFILE で、gc.lib とヘッダファイルのインストール先、それにプロジェクトの追加のイン…

Windows Mobile 6 エミュレータでコンソールを使う

Visual Studio 2005 では、Windows Mobile 6 のエミュレータを使って開発できますが、コンソールがないため開発が不便です。以下の方法でWM6にコンソールを追加します。ホストとなる PC、エミュレータのウインドウ、エミュレートされているデバイスと、3つ…

ruby-opengl のコンパイル

MinGW に glut を組み込む gl・gluライブラリは、MinGW内にすでにlibopengl32.a, libglu32.a として含まれていますが、glut がありません。glut のソースは MinGW ではコンパイルできないので、バイナリアーカイブ glut-3.7.6-bin.tar.gz を入手します。 ヘ…

ライブラリの中身を知る方法

http://oshiete1.goo.ne.jp/qa1935953.html「nm」コマンドを *.o や *.a に対して実行する。 grep と組み合わせると吉。ついでに「file」コマンドで、ファイル種別が判別できます。なぞの拡張子に出会ったら、とりあえず打ってみよう。

魂の叫び

configureとかmakeとか、いまどき逐次実行なんて信じられない!make に関しては export MAKEFLAGS='-j 2' としておくと並列実行できるみたい*1ですが、そうすると今度は configure がなおのことじれったい。configure スクリプトをうまいこと解釈して、マル…

Gem をつくろう

RMagick と wxRuby2 の gem を作ります。 実はどっちもやり方は簡単。 RMagick の場合 付属の rmagick.gemspec をそのまま使うと、gem インストールの際コンパイルを始めてしまうのでうまくありません。 というわけで、バイナリ用の gemspec を用意します。R…

RMagick をビルドする

ライブラリのインストールが終わったら、ImageMagick のビルドです。 ImageMagick ImageMagick 6.4.9 を使います。別エントリに書きますが 6.5.x はダメです。(6.3.5以降はお好みで)MinGW でのコンパイルについては Install-unix.txt に記されています。 現…

RMagick をビルドする(下準備編)

RMagick の前に ImageMagick をビルドしますが、素の ImageMagick はjpegやpng を扱えないので、まず主要ライブラリをビルドします。libpng, jpeg6b, lcms, libexif, freetype, GhostScriptFont の tarball を落として展開します。 パスに空白を含むディレク…

wxruby2 のインストール

gem でインストールした wxruby-ruby19 は、Ruby 1.9.1-p129 では使えません。(dllMain@12が見つからないとダイアログが出る) よってこれも自力でビルド。参考:Unable to use wxruby-ruby19 in Ruby 1.9.1-p129 on Windows - wxRuby - Ruby-Forum wxWidge…

Ruby 1.9.1 をビルド

ソース ruby-1.9.1-p129.tar.bz2 を落として展開したら、以下のコマンドを順に実行します。 ./configure --enable-shared --prefix=c:/ruby1.9 make make test make install make test で、 「(809/934) tests failed」となりますが VC でも同じだしとりあえ…

MinGW をインストール

Ruby1.9.1環境をビルドするために、MinGW環境を構築します。 VCを使わないのは、拡張ライブラリによってVC6じゃないと通らないとか、2003だ2005だと複数のコンパイラを使い分けるのがおっくうだから。(拡張ライブラリのランタイムバージョンがそれぞれ異な…

IT技術系ブログです

マカロニファン向けのネタは扱いません(あしからず)。 マカロニウエスタンネタが通じるプログラマも少なそう。 Windows 上で Ruby を使った備忘録的なネタが主になると思います。WxRuby とか。 マイナーネタばかりですが淡々と更新していきます。元ネタの…