プログラミング

error LNK2019: 未解決の外部シンボル が出る

人からもらったVCプロジェクト、 リリース設定ではコンパイルできるのに デバッグ設定でのみコンパイルできない ので半日ほど悩んでみた。結論としては、デバッグ構成のリンク設定で、 デバッグ用lib(Libcmt"d".lib)とリリース用のlib(Libcmt.lib)がごっちゃ…

.net DataGridViewのチェックボックスがチェックできない

半日くらい悩んだけど、DataGridView自体のReadOnlyプロパティがTrueになっていたというオチ

C#のstring.ElementAt(i)が重い

string str = "aaa"; char c = str.ElementAt(0); タイトなループで使うと重い... のでこう書いた。 char c = str[0]; Linqをよく知らずに使うとこうなる。

dinput8.lib(dilib4.obj) : fatal error LNK1103: デバッグ情報が壊れています。モジュールを再コンパイルしてください。

早い話が、DirectX SDK (June 2010) はVS2005をサポートしていなかった。 OS:windows7 professional 64bit VS:Visual Studio 2005 SDK:Microsoft DirectX SDK (June 2010) Visual Studio 2005 will no longer be supported.http://www.microsoft.com/downloa…

Xperiaのフラッシュを点灯させる@android

多少手間取ったので、ここに書くことにする。http://www26.atwiki.jp/android_development/pages/28.html を参照して ServiceManager.java Binder.java IHardwareService.java を追加して setFlashlightEnabled(true) すれば大体解決するんだけれど、 Androi…

コメント書き@doxygen

月曜以来ほったらかしてたプログラムのドキュメント作り。 オーバーロード(メソッドの多重定義)好きなものだから、関数がやたら多くてコメントを打つのが大変。 使いやすいクラスも大事だけど、シンプルなクラスもメンテナンスが楽でいいのかもしれない。 雑…

C#でMSHTMLを使ってHTMLのパース

windowsアプリケーションを創るなら、C#のほうが楽そうだ と思ってMFCを離れてC#に挑戦してみる。 ファイルをダウンロードするアプリケーションを作りたいので、 MSHTMLとやらを使ってHTMLのパースをしてみる。 手始めに、↓を参考にデッドリンクチェッカーを…

cvCreateMatが重い

プロファイラにかけてみたら、cvCreateMatが意外に重い。 頻繁に呼ばれる関数で毎回、行列を確保・解放するのがよくない。 幸いにも、自分が使う行列は3x3と3x1だけなので 3x3と3x1の行列をクラスのメンバとして確保することにした。 コンストラクタで十分な…

openCVで「システム エラー - コンピューターに cv110.dll がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。」

windows7(pro 32bit) + Visual Studio 2005 にopencv 1.1をインストールしてみたらこれだよ。 いつも通り、 http://d.hatena.ne.jp/piy/20081130/1228020473 で治った。

比較演算子のオーバーロード

std::max_element(tmpWalls.begin(), tmpWalls.end());なんてするのに比較演算子が必要になったので、用意した。 bool operatorsize

STL

片方のクラスは配列がlistで、もう片方のクラスは配列がvector。二つのクラスをつなぎ合わせるところで力尽きた。 //書き換えるのも面倒なので、listからvectorにする関数でも書こうと思った

STLのlistの要素をループ中に削除する

例として、list中の負の値を持つ要素を削除するもの std::list<int> iList; /* 略 */ std::list<int>::iterator itr, itrEnd; for(itr = iList.begin(); itr!=iList.end(); ){ if(*itr < 0){ itr = iList.erase(itr); continue; } itr++; } eraseで削除後のイテレータ</int></int>…

C++でbool値を反転させる方法

bool flag = false;//flag == false flag = !flag;//flag == true ということを知った。 x = ~y; ~演算子:ビット単位での反転を行う(NOT) x = !y; !演算子:bool変数の反転を行う

list iterator not dereferencable

C++のSTLのlistで list iterator not dereferencable などというエラーが出る。 std::list<Foo>::iterator itr2 = listFoo.begin(); std::list<Foo>::iterator itr2End = listFoo.end(); for(; itr2!=itr2End; itr2++){ //〜略〜 itr->Method(); //〜略〜 } 値が代入さ</foo></foo>…

MFCでダイアログの関数のオーバーライド

VC++でダイアログの関数の「オーバーライド」がプロパティに出てこない、と思ってたら ダイアログのヘッダファイルを開いたらプロパティに出てきた。

M_PI : 定義されていない識別子です

Visual Studio 2005で #include したのにM_PIが使えない。 #define _USE_MATH_DEFINES #include こうせんといかんらしい。 M_PIとかの(数学)定数はANSI Cの標準機能ではないとかどうとか。

コンストラクタの宣言に戻り値の型が含まれています

クラスの閉じブレース{}にセミコロンを忘れていただけの話。class{ //〜 };

エクセルとC++のatan2

エクセルの関数のatan2 ・atan2(x座標, y座標)C++のatan2 ・atan2(y座標, x座標)引数の順番が逆になっていたなんて。エクセルの関数をC++にコピペってたら、↑が原因でうまいこと動かなかった。

ブレークポイントは、現在の設定ではヒットしません

Visual Studio 8でデバッグができない! とかあせってたら、普通にReleaseモードでした。Debugモードに変更したら、なんなくデバッグできましたとさ。

PPのオプション

Perlスクリプトをexeファイル化するための"PP"のオプションをすぐに忘れてしまう。 pp -o test.exe test.pl これでおk。(そもそも、PPのインストール方法を覚えてない...ずいぶん苦労した覚えがある、PPのインストール。