2011年6月30日木曜日

Win32とx64

Visual Studioで、Win32とx64は共存できないのかな。
今までx64で作ってたけど、キャプチャボードのライブラリがWin32じゃないと動かない。
それでプロジェクトを分けてWin32とx64で作って、リンクさせようとしたけど、ライブラリの関数が見つからんいといわれる。

2011年6月29日水曜日

OnTimer x64

プロジェクトをWin32からx64に変更すると、
OnTimerでエラーが出る。
これは、Win32のUINTからx64でUINT_PTRと型が変わるかららしい。
だから、関数をOnTimer(UINT_PTR nEvent)に直せばいいようです。




参考
http://social.msdn.microsoft.com/Forums/ja-JP/vcgeneralja/thread/1defe0d8-3c6e-4a5c-8ba4-0c052502d2df

2011年6月28日火曜日

file入出力

<入力>
ifstream ifs(char *filename, ios::in);
とか
ifs.open(char *filename, ios::in);
とかでファイルを開く

char buf[64];
ifs>>buf;
これだとスペースとかで区切られる。

行で読むときは
ifs.getline(buf, sizeof(buf));
というようにする。

文字の型変換

・ユニコードとマルチバイト
WideCharToMultiByte
MultiByteToWideChar

・stringとchar

2011年6月25日土曜日

Boost threadの引数

スレッド生成時に引数をとることにしていて、
int型の引数はちゃんと値を入力できたけど、char*型は値が入らない。
どうなってるの?

スレッドとウィンドウ

スレッドの中でウィンドウを宣言して、スレッドを一旦終了してから再度開始する場合。
さらに、ちゃんとスレッドを解放できない時。うまく開放できてないっぽい。
どこかでリークしているウィンドウの宣言(名前)とぶつかって、ウィンドウを作れない。

使っているのは、boost threadとOpenCV2.2.9。
ちゃんと解放しましょう、ということなんだけど、分からず、スレッドの終了時にcvDestroyAllWindows()で一括削除。

2011年6月24日金曜日

MFC

ラジオボタン
:複数の選択肢から1つを選択する

<使い方>
・グループボックスの中に複数のラジオボタンを配置
・ラジオボタンのIDは連続した番号でなければならない
例:IDC_RADIO_CANDIDATE01, IDC_RADIO_CANDIDATE02, IDC_RADIO_CANDIDATE03, …。のように
・先頭のラジオボタンのプロパティでGroupをTrueに設定する
(その他のラジオボタンでGroupをTrueにしたら,選択肢が1つだけにはならなかった)
・先頭の(?)ラジオボタンに変数を加える(他のボタンで加えてもいいのかな?面倒なので試してない)
valueでint型にしておいた。
・先頭の(?)ラジオボタンでイベントの追加
クリックされたら,というところで,
UpdateData(true);
  ・・・
UpdateData(true);


以上で,動きました。

2011年6月18日土曜日

構造体のvector配列におけるsort

評価関数を別に作るらしい
struct Point2D {
     int x;
     int y;
}

vector<Point2D> pt;

bool ascending_x_Point2D (const Point2D &_p1, const Point2D &_p2)
{
     return _p1.x < _p2.x;
}


bool ascending_y_Point2D (const Point2D &_p1, const Point2D &_p2)
{
     return _p1.y < _p2.y;
}


sort(pt.begin(), pt.end(), ascending_xPoint2D);


※ソートの範囲をしているするには
sort(&pt[0], &pt[5], ascending_xPoint2D);
のように、ソートの始めと終わりのアドレスを渡す。




-----
参照:http://atashi.net/inu/ja/notes/stl_vector_sort.html

2011年6月7日火曜日

OS on SSD スタートアップ修復

PCつけっぱなしにしてたら、朝ブルースクリーンになってて、スタートアップがおかしくなったとでてきた。
OSはSSDに入ってる。
それがSSDは認識されてるはずだけど、BIOSから見えてないようで、さきにドライバを入れてみるが?
Windows 7 DVD→ドライバのインストール→スタートアップ修復とかやっても、ダメ。

結局、OSの再インストール。
でも、今までのデータは残されていたから、環境の構築だけで済む。
Program Filesの中は、バックアップされて、他のはそのまま残ってるみたい。

2011年6月3日金曜日

VC++ .libのリンク

1つのソリューションにdllのプロジェクトを作ったときのリンクについて。
#pragma comment ("*.lib",lib)
と書くけど、リンクされなかった。
どうやらプロジェクトの依存関係をきちんと指定しないといけないみたい。
依存関係にチェックしておいたら、コメントでリンクする必要もないらしい。