DxLibFanに戻る
Please Click ↑↑↑
概要:
さて〜。世の中にはC/C++言語での開発をしやすいようにするツールが出回ってます。
私はVC派なので(最近、CodeWarriorに目移りしている^^;)結構ポピュラーな環境だと思う。
なので、皆さんのPCにも私流の環境を作ってみて便利だよ〜〜ってのを実感してほしいということでここに示します。
ちなみにかなり手抜き説明ばっかりですので、
とある資料について教えてほしいって時は掲示板に催促してください。
私が時間のあるときにアップいたします。
ヘルプファイルはすべてまとめる!!MSDN Integrator
MSDN Integratorというソフトがあります。
(
ここでダウンロードできるみたい)
しかもソースつきです。
MSDNにchm形式のヘルプファイルを統合するソフトなんです。
DirectX系のSDKのヘルプファイルをまとめると、
しっかりVisualC++上でLPDIRECTDRAWSURFACE7とかを選択してF1キーを押すと、検索されるんですよ。
もうジャストミートって感じで!!
って事で使うことをお勧めします。
使い方は英語ですがどっかに書いてます。
分からなすぎ〜〜!って方は私の掲示板とかで催促してください。
私が時間のあるとき説明をUPしますので^^
tips
MSDN Integratorはchiファイルがないと使えない。
その時はchmファイル
HTML Help Workshop
をDecompileすればいいのだ。
参考サイト
Last Update
20:02 2003/08/19
20:22 2003/04/20
ライブラリにパスを通してますか!?
さすがにライブラリへのパスの通し方を分からないって人はいないと思うので^^;
割愛!
参考サイト
いろんなライブラリが欲しいんだけど・・・
じゃぁ、まず手始めに、VisualC++環境で使えそうな奴を考えられるだけ並べときます。
あとは自分で検索してください。
参考サイト
DxLibでゲームを作る時の環境の整え方
関数の候補リストを表示させる
- まずはDxLibをコンパイル済みとソースの両方をダウンロードしてきてください。それらを解凍してください。
- では、手始めとしてDxLibのコンパイル済みの方に入っているサンプルプログラム実行用フォルダを使って説明します。
”サンプルプログラム実行用フォルダ”内に
ソース入っているフォルダ(DxLibMake)を追加してください。
そして、DxLib.dswをダブルクリックして開いてください。
-
開き終わったら、この画像のように、DxLibMake.dspを”プロジェクトをワークスペースに挿入”で挿入します。
これで終了です。グローバルネームスペースでしっかり認識してます。
DrawGraph( と入力したらしっかり引数が表示されるようになります。
こんな感じでOKなんです。
以上です^^お疲れ様でした^^
さて、WriteOnceはそのまんまです。
一回だけプログラムを書いたらあとはいろんなOSでコンパイルすることが出来るというライブラリです。
で、私が最終的に決めたのは
FOXです。
個人的に良い点を申し上げますと、
- Windowのレイアウト方法がすべてプログラム側で記述できる事。
( VCみたいにいちいちリソースエディタでマウスで操作しなくてすむ
( リソース専用の言語を使わないですむ
- ウィジェットが簡単に作れること
- VC6.0に完全対応な事
- main (WinMain)を隠蔽しないところ
- Ruby,Pythonでも使えること
- GUIダイアログエディタが他の応援サイトで作られていること
dlgedit.exeっていうファイル名です。
(デザインしたとおりのダイアログの表示を記述したプログラムを出力してくれるので本当に助かってます。
等です。
詳しくは
こちらののFOX-TOOLKITチップスをご覧下さい。
crtdbg.hのメモ
実は、私もcrtdbg.hは使いはじめで全機能はよくわからないのですが^^;
メモリリークチェックやアクセスバイオレーションチェックに利用してます^^
さて、メモリリークのチェックですが、実はロベール氏ののHPロベールの部屋
のプログラマの友の”メモリリークとcrtdbg.h”の内容と同じです。
- _CrtDumpMemoryLeaks()という関数を使えば
OutputDebugStirngで出力される領域に
メモリリークの告知が出るみたいです。
ちなみにデバッグバージョンでしか機能しなかった気がします。
しかし、私はこの関数をあまり使いません。
なぜならC++のデストラクタに無力だからと聞いたからです。
- 私は以下のようにして使っています。
そして、WinMainの最初に以下の関数を定義します。
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
これもロベール氏の記事を見てそのままなのですが、
この関数によってソフトが終了し、C++のデストラクタが呼び出されて
最後の最後にcrtdbg.h側で_CrtDumpMemoryLeaks()を呼び出してくれるというものです。
また、アクセスバイオレーションチェックですが、
私は結構この機能でバグを見つけてます。
アクセスバイオレーションしてそうな場合はすぐにデバッガに戻っていってくれるのです。
ちなみになんかよく分からない英語のダイアログが表示されますが、
再試行をすればたしか、デバッガにいけるはずです。
大体、私はいつもfree()で警告を受けてデバッガに戻されます。
さて、どのような内容でエラーになるかといいますと、
この他にも、いろいろな条件でエラーが出ます。
私もどこにもエラーは無いじゃないか!!と思っているようなソースでも出ます。
まだ使い始めのcrtdbg.hです。何かがわかり次第、また報告します。
また、どちら様かcrtdbg.hは私の使い方以外によい使い方がありましたら教えていただけないでしょうか?
- サンプル
ログとして出力されるメモリリークの突き止め方
大切ですのでご存知ない方はこの機会に覚えたほうが良いと思います。
私はいろんなサイトを巡回して知り、大変感銘を受けました。
メモリリークログは以下のような形で出力されます。
さて、これらの情報からリークを突き止めるのに必要な情報は、
何回目のmallocで呼び出したか と リークしたメモリのサイズ です。
VisualC++6.0でのメモリリークチェック
VisualC++6.0 には VC98フォルダ内にー>CRTー>SRCというフォルダがあり、このSRCフォルダ内のDBGHEEP,C
の_nh_malloc_dbg 関数の最初辺りにブレークポイントを仕掛けます。
仕掛ける場所としては242行目あたりが良いでしょうか?
そしてALT+F9キーを押して、条件を設定します。
・nSizeは確保したいメモリ領域ですので、リークしたサイズを入れると、nSize==指定したサイズの時にとまってくれます。
・下の方のダイアログにはスキップする回数があります。メモリリークログの「何回目のmallocで呼び出したか」と
同じ数字を入れるとちょうど指定したその関数が呼び出された回数の時にとまってくれます。
ちと、日本語として分かりにくいですね^^;すまそんすまそん。
分かりにくかったら掲示板にでも催促してください。
画像つきでもやろうかと思いますので。ではでは。
2004/2/11追記
- 参考,情報元サイト
ロベールの部屋 ->プログラマの友 ->メモリリークとcrtdbg.h
DLL作成メモ
意義
DLLを作成する・・・。
DLLは・・・また今度・・・
STLPort メモ
始めに...
Standard Template Library(以下STL)を使ったことがありますか?
名前すら知らない場合は、
関連、参考 文献を見てください。
私はこのSTLを使い始め、かなりプログラミングに対する考え方,およびコーディングスタイルが変わりました。
基本的なC++でのtemplateの使い方をこのライブラリで学びました。
さて、STLを使うと、実は、メチャメチャ簡単にほしい機能が手に入れられるんですよ!例えば、双方向リスト構造とか,動的配列とかね^^;
で、もちろん皆さんが使っていると思われるVCにも標準でついてますが、私の使っているVC6に付属しているSTLはなんか評判よくないんです。
なので、私は
STLPortという、人気の高い
フリーのSTLを使ってます。
まぁ、使い方はGoogleで調べれば、大量にでてくるので(例えば ”STLPort 使い方”とか)、そちらの方を見ることをお勧めします。
しかし、何かとSTLPortのコンパイルの設定について日本語の資料がありませんね。(私が知る限り)
どの条件の時なにを#defineすればいいか分からないとか、私にとっては結構曲者なんですね。(私は英語は出来ないから・・・)
という事で、私はこのように設定してますよ〜〜って事で以下に示したいと思います。
STLPortのコンパイル設定
STLPortを使う際、stlportフォルダ内の_site_config.hやstl_user_config.hを書き換えてmake等でコンパイルすると思います。
その設定について私流のやり方は以下のようにしています。
共通
・#define _STLP_OWN_IOSTREAMS 1をstl_user_config.hあたりに定義する
Debug用
・_site_config.h
- # define _STLP_USE_DYNAMIC_LIB のコメントアウトを外す
- #define _STLP_DEBUG_ALLOC 1 のコメントアウトを外す
Release用
・デフォルトの状態でOK
こんな感じかな?
で、VisualC++の場合、_site_config.hを以下のようなので上のほうに追記でもしちゃえばいいのかな?(爆
STLPortの正しいと思われるインクルード方法
2004/05/19 追記:
以下の設定は環境により、上手く行かない事があるようです。と、いうより、今までよくこの設定でコンパイルできていたものだ^^;
条件:
・インクルードパスがSTLPortを解凍したフォルダ内のstlportフォルダになっている事
・ライブラリへのパスがSTLPortを解凍したフォルダ内のlibフォルダになっている事
MinGWでのコンパイルの方法
cppllでも話題になったもの。
私の環境ではMinGW-3.1.0-1.exeでインストールしたMinGWを使い、一応、cygwinもインストールして、パスも通してあるのに、
コマンドプロンプトを使って以下のバッチファイルを使ってビルドできた。
注意としては、mingwとstlportのmakeの置き場所を半角英数字以外のフォルダにしない事(結構、気づくのに時間がかかった。
echo 参考:cppll archive 9766
mkdir ..\lib\obj\MINGW32\DebugSTL
mkdir ..\lib\obj\MINGW32\DebugSTLD
mkdir ..\lib\obj\MINGW32\Release
mkdir ..\lib\obj\MINGW32\ReleaseD
make -f gcc-mingw32.mak MKDIR=echo
関連、参考 文献
Windowsでのファイルの操作の仕方
カレントディレクトリ問題
こんばんはコラム |
マルチスレッドアプリケーションでは「スレッド一つ一つがカレントディレクトリを保持している」
とどっかの資料で眺めたような気がするが、
実際に確かめたことが無い。
|
カレントディレクトリ?なにそれ?えーっと、そのソフト自体
が保持しているディレクトリパスのことらしいです。詳しくは各自IT用語辞典とかで調べてくださいな^^;
で、そのカレントディレクトリはデフォルトではその起動したソフトと同じディレクトリになっています。
そして、よくこんなの見かけますね。
fopen("test.dat");
CreateFile("test.dat" なんたらかんたら);
さて、これのどこが悪いのか。しっかりしたアプリケーション作るなら、こんなことすることはやめましょう。
これは相対パスで記述されており、もし、
OpenFileDialog、SetCurrentDirectory等の関数で、カレントディレクトリが変更されたりしたら、
自分の開きたいtest.datというファイルが開けなくなるのです!
ですので、フルパス指定が必要なわけです。
まぁ、相対パスでも読み込めるようにするには各自、自分の読み込み専用関数かなんかを用意して
どうにかするのがいいですね。
たとえば、WinMainの最初のほうでカレントディレクトリを記憶しておいて、
自分の読み込み専用関数に相対パスを通すと、絶対パスにしてfopenしてくれるとかさ^^;
私の作っているdkaftkなんかには
その機構を実装するつもりです。
SHIFT-JIS 日本語パス問題
詳しくはd金魚の鼻血boostのboost::filesystem内の「完全に日本語に対応しているのか」を参照してください。
MAX_PATHについての考察
Windowsでファイルのパスを格納するバッファのサイズはMAX_PATH(260) byteと定められている。
果たして本当にそうか試してみた。
環境:Windows2000
実験方法:Cドライブの一番上にフォルダやファイルを生成する。
- エクスプローラーで260文字のファイルを作成・・・
結果:254文字(byte)のファイルを作成できた。C:\の3文字とNULL文字を合わせて258文字。
- エクスプローラーで260文字のフォルダを作成・・・
結果:242文字(byte)のファイルを作成できた。C:\の3文字とNULL文字を合わせて256文字。
- 2の結果で生成したフォルダ内にファイルを詰め込む・・・
結果:12文字の文字列であればOKのようだ。(SJISで2バイトある文字でも12文字ぶち込むことが出来た。
- エクスプローラーで260文字の2バイトでフォルダを作成・・・
結果:実験2と同じ結果くらいの文字数だった(byte単位ではない)
結論:
実験4より、2バイト文字でも1バイト文字でもMAX_PATH制限は変わらなかった。
と、言う事は、MAX_PATH * 2 + 30 byte くらいのバッファが安全なんじゃないの?
実験3より:242 + C:\ + \ + NULL文字 + 24byte = 271...
本当に260byteで十分なのか?と考えてみると、どうもそうでは無いらしい。
これより・・・、導き出されるものは保険として300byteくらいは必要じゃないのかな?
だったりする^^;
(charを使ったファイルパスの操作の場合。
w_char(UNICODEでいいのかな?間違っている場合は教えて頂けると有難いです。)を使ったファイル操作の場合は子の実験では考えていない。)
参考,関連 資料
Loki メモ
概要
LokiはMorden C++ Designで有名なあのライブラリです。boostと並んで非常に重要なC++ライブラリです。
sourceforge.netでLokiと検索すれば手に入るでしょう。
VisualC++ 6.0 (MSVC6)で上手くコンパイルできない。
備忘録:
-
その他に、Singletonが内部で使う、SmallObjというのがあるのですが、こいつは今のPC環境では役立たずに等しいらしく、
これを使用しないように改造する必要があるとかないとか。
(実際、私はこの部分を直すのがめんどくて、LokiのSingletonを使うのを止めました。)
参考サイト
- DebugビルドにてNT系OSでint 3で止まる問題・・・
私は以下のような関数ポインタにGetProcAddressで得たポインタを渡して呼び出したら上手く呼び出せたが・・・
なにかと、Susieプラグインって問題が多いらしい・・・
特に、プラグインを作る側はしっかり後までサポートして欲しい、
または、サポートがほぼ出来ない状態だったらソースを公開して欲しい。
Susie発展のためにも切実な願い。
- 参考サイト
d金魚のおもちゃ
私は沢山のおもちゃに囲まれて楽しんでいる。(d金魚は沢山の開発ツールを使用してプログラミングしている)
ここはそれらを自慢をするためのコーナーである。(ここはそれらを紹介するためのコーナーである。)
doxygen
SWIG
- 入手先:
- 使用用途:テキストエディター。日本のProjectが作ったから日本的に分かりやすいつくり。文字コード系も充実。オープンソースマンセー。
- 備考:
sakura editor for C++ Memo(2004/2/21)
- タブの設定を変える。(タブのファイルのフルパスが長すぎる!)
共通設定→ウインドウ→タイトルバーのタブのところを、以下の文字列で置き換え。
${w?【Grep】$h$:【アウトプット】$:$f$}${U?(更新)$}${R?(読みとり専用)$:(上書き禁止)$}${M?【キーマクロの記録中】$}
sakura editorの一般掲示板[3605]より引用
- C++のコメントの色分けが上手く働かない時
ツール→タイプ別設定一覧→C++→正規表現キーワード
C++のコメント: m#//.*\n#k
C言語のコメント:私の技術じゃ正規表現で表現できない。だれか教えてください。懇願m(_ _)m
その後、「カラー」タブ、色指定のところで色を変える。
- シングルクォーテーションやダブルクォーテーションが邪魔な時。
ソース内に英語のコメントが書いていてI've なんたらかんたらって時に
シングルクォーテーション(アポストロフィ)後の文字色が次のシングルクォーテーションが来るまで
ずっと同じって事ないですか?
そんな時はシングルクォーテーション、ダブルクォーテーションを
ツール→タイプ別設定一覧→C++→カラー→色指定のところで色を変えちゃう!これで準備万端!!
(これに気づくのに数ヶ月かかったよ^^;
- その他はいろいろ実験中。良い使い方があったらどうか、教えてくださいませ。懇願m(_ _)m
Folding@home
Pulse
eve
- 入手先:Vector作者紹介ページ:むねピ!氏
- 使用用途:環境変数を設定する(バックアップも出来るので超便利!)bjamでSTLPortを使ってboostをコンパイルすときとかに使う。
- 備考:
upx
- 入手先:http://upx.sourceforge.net/
- 使用用途:exeファイルやdllファイルを実行できる状態で圧縮する。
- 備考:
UPX日本語 frontendというのもある。GUIで操作できるので、直感的に楽かも^^;
内部に同梱されているUPXは古いので更新したほうが良い。
http://www.vector.co.jp/soft/win95/util/se139612.html
統合開発環境
VisualC++
DevC++
MinGW Developer Studio
BCC Developer
その他
その他にPerlやRubyやPythonやTclも使うけど、最近、そんなに使っていない。
そうです!そのほかにはDevasっていう文字列検索、置換ソフトも使います。
これはもう最強です!手放せません。これについての事は後々・・・。
DxLibFanに戻る
DxLibのダウンロードは以下から
DxLib Copyright(C) 山田 巧
The program using DxLib.
The text of this page.