Author Archives: admin

CMenu SetMenuItemStringがない

プロセス間でintを共有するクラス(Windows)

最初に0クリアする方法がいまいちわからなかった。
カーネルオブジェクトの名前にLocal/やglobal/をつければセッション間でもできるみたいだがスルー

Eclipseにsubversiveとpydevをインストール

Eclipse IDE for Java Developersをダウンロードして展開、起動する。
このバージョンはVersion: Luna Service Release 1 (4.4.1)

Version: Luna Service Release 1 (4.4.1)

メニューからHelp Install New Softwareを選択
Work withからLuna を選択
リストからCollaboration Subversive SVN Team Providerを選択

Installation of Subversive to Eclipse

適当に進んで、Eclipseを再起動してインストール完了
SubversiveはConnectorもインストールしないと使えないのでインストールする。
使うときになるとインストールダイアログが出るのでプロジェクトを新規作成でSVNからつくる。

Installation subversive connector

Windowsの場合はJavaHLがいいようだ。
適当に進んでインストール完了

つぎにPyDevのインストール
Help Install New Softwareを選択
Work withのAddをクリック
Adding pydev update site to Eclipse

PyDevを選択してインストール

select pydev and install

MinGWを使う

http://sourceforge.net/projects/mingw/files/ へいってmingw-get-setup.exeをダウンロードして実行

デフォルトのままインストール
install mingw

とりあえずmingw32-baseをマークしてApply Changesしてインストール
MinGW installation manager

基本的なGNU開発ツールがインストールされたようだ。
コマンドプロンプトだといやなのでmsys-baseもインストールした。

C:\MinGW\msys\1.0\msys.batを実行

ただコマンドプロンプトだといやなのでmsys-minttyをインストール
C:\MinGW\msys\1.0\bin\mintty.exeのショートカットを作ってオプションに-を追加。
Add - on mintty option

できた。
ただまだMinGWにパスが通ってないのでfstabを編集する。msysからできる。
(vimもなかったのでmsys-vimもインストール)

これでgccが見えるようになった。

Cプログラムhello.cを作成

コンパイルして実行

winhello.cを作成

実行

winhello created in msys and mingw

dependencywalkerで依存DLLを調べてみる

check dll dependency of my a.exe created with mingw

インストールに使っていたmingw-getはコマンドからも使えるようだ。

pythonでUnicodeEncodeError: ‘cp932’ codec can’t encode character

pythonは基本Unicodeなので悩むことはないと思ってもWindowsのコンソール出力はunicode対応してない(多分)ので、printなどの出力は日本語環境だとpythonは内部的にcp932に変換しなくてはならないと思われる。

以下のファイルをWindowsのコンソールからpythonで実行すると例外が発生する。

C++や.NETでもUnicodeはコンソールに出力できないようだ。

このファイルはsigつきutf8かUnicode(UTF16)で保存すればclは理解できる。
出力

.netのWriteLine()は??に置き換えてるのでpythonでもこのやり方でやってみる。

このやり方だと美しくないし、パイプ処理のときはおそらくutf8でもOKなのでもっとうまいやり方があるのかもしれない。

VC2010でQtをデバッグ

Qtのフリーバージョンをダウンロードして起動、インストール先はC:\Qt
install qt source vc2010

msvc2010 32-bit OpenGLとSource Componentをチェックしてインストール

作業フォルダ(ここではC:\work\qtvc)に以下のファイル作成

hello.cpp

hello.h

main.cpp

hello.pro

コマンドプロンプトを開いてqtenv2.batとvcvarsall.batを実行

qmake -tpでvcのプロジェクトファイルを作る

pathにqt環境がないとVCで作ったEXEがDLLを見つけられないのでコマンドプロンプトからVCを起動する。vcvarsall.batを実行してるのでvcexpressはフルパスでなくていいようだ。

デバッグビルドしてF11で実行するとソースの場所を聞かれるのでC:\Qt\5.4\Src以下から探して教える。

qt source location

この例の場合はC:\Qt\5.4\Src\qtbase\src\winmainにある。

debugging qt with vc2010

できた。

batファイルでシステムの言語で処理を分ける

ERRORLEVELはFINDの戻り値。
0 : 見つかった
1 : 見つからなかった
2 : エラー

LANGID
Language Identifier Constants and Strings (Windows)

上記の例はインストール時の言語の様な気もするので
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ACP
のほうがいいかも、これは非ユニコードアプリのcode pageと思われる

NTFS reparse pointまとめ

JUNCTION POINT

シンボリックリンクの簡易バージョンようなもの、ファイルには使えない。

Sysinternalsのjunctionコマンドの場合(XP)

シンボリックリンク

ファイル名やフォルダ名に対してリンクするようなもの
mklinkコマンドで作る(Vista以降)

ファイルにシンボリックリンクは張るとディレクトリ属性になるみたいでファイルとして扱いづらい。しかしファイルとして開けばファイルになるようだ。

ハードリンク

ハードリンクはファイル実体に対して2つ以上のファイル名を持てる仕組み、通常ディレクトリには適用できない。
fsutilコマンド作れる。(XP)
mklinkでも作れる(Vista)

プログラム

ジャンクションやシンボリックリンクはディレクトリ扱いになり、属性にReparsePointフラグが立つ。