VC
今更ながら、VCのデバッグ。 Win32アプリケーションのデバッグ方法 [VC++の使い方] DebugBreakは使ったことがなかった。確かにそれは、こういう使い方向け。便利かも。
Vistaで動作するプログラムを作る場合、odawaraは基本的に.NETしか使わないようにしている。なぜかというと、昔、winsockのバグに当たって苦しんだことがあるから。 Vistaのバグ - odawaraの「はてな de メモ」 この時調べたのはあ、VistaにおけるWinsockはT…
WOW64はコストがかかる - odawaraの「はてな de メモ」 昨日の続き。 XPの64bit環境で実行しました。win32がWOW64での実行。 ビルドはリリースビルド。下サイズのメモリを指定回数分memcpy()したときの時間を計測。16Bの場合はL1かL2に乗るはず。 環境 512MB…
まぁ当たり前だよな。 http://d.hatena.ne.jp/egggarden/20090620/1245457823 特に呼び出しのコストが大きいはず。スループットはあんまり変わらないと想像しているが、どうだろう?そのうち試してみよう。
32bitなアプリケーションがWOW64経由で動作しているかどうか確認する方法。 BOOL bIsWow64 = false; BOOL is_64 = IsWow64Process(GetCurrentProcess(), &bIsWow64); WOW64経由だとIsWow64にtrueが入ってくる。
CLIで設定ファイルを読み込むのは超めんどくさいと思っていたのだけど、xmlを使うと楽になることを知る。 だらだら日記 C++/CLIと.netでiniファイル的な事をする場合は? おー、これは便利だ。
全然関係ないけど、パソリとMySQLをいじって遊ぶ。なかなかおもしろいな、最近Felica使うことだし、PaSoRi買ってもいいか。
Win32でLPVOIDを使っていたものを.NETからimportする場合はSystem::IntPtrとして置き換えが可能らしい。まだ動かしていないが。
そういえば基本的なことを知らなかったので調べてみた。WindowsのPAGE_SIZEは、 DMA Support in KMDF Driversによると、x86とx64では4K。Itanium(IA64)だと8K。 Map registers translate addresses in much the same way that the processor’s memory manage…
VCでINT64を扱う場合、 a = 12345678i64;とできる。以下が参考になる。 Shudo's Notes (2003/9)
VCでお手軽bswap _byteswap_uint64, _byteswap_ulong, _byteswap_ushort | Microsoft Docs 長さもいろいろ用意されていて便利。特に64bit環境でx86とppc64を行き来してる場合なんかに。
I64xとして出せばOK。 ULONG lr = 0x1234567812345678; printf("0x%016I64x\n",lr);参考: プロセスのI/O操作情報を取得 - プログラミングのメモ帳(C/C++/HSP)
2008-07-01 GDIのアクセラレーションってたまにほしくなる気がするんだけど、意外とテクニック次第で何とかなることが多い。上に書いてあるとおり、Flashだって昔はなんのアクセラレーションもかかってなかったんだから、現代のCPUなら意外と動くものがほと…
スレッドの本数を決めるに当たって、CPU数を取得するのってどうやるんだろうと思ったら、意外と簡単だった。 http://shoppers-jp.com/tech/sdk012.html SYSTEM_INFO si; GetSystemInfo(&si); printf("プロセッサ数 : %d\n", si.dwNumberOfProcessors); とす…
探してみてもsendtoの最大サイズがわからなかったので調べてみた。 for(int i=0;i
内部的にはGDI+なのかもしれないけど、.NETのBitmapは結構最強。 Drawing::Bitmap^ bitmap = gcnew Bitmap(1920,1080,1920*4,System::Drawing::Imaging::PixelFormat::Format32bppRgb,(IntPtr)Convert_yuv->rgba_buffer); pictureBox1->Image = bitmap; Draw…
VC8だったからかsprintf_sが導入されて、sprintfで怒られるようになったんだけど、Linuxとソースが共通なんだから修正はできない。というわけで、下を参考にして、 Visual C++ 2005でのstrcpy等非推奨 (warning C4996) - 開発覚え書き プロジェクトのプロパ…
Visual C++ Tools and Features in Visual Studio Editions | Microsoft Docs CRTのソースがついてこないのは、ちょっとめんどいな。デバッグがちょいうざい。
http://d.hatena.ne.jp/Willamette/20060705/1152100692 デュアルコア以上のCPUでは、rtdsc命令が異なるコアで実行される場合があるので、こんな時はQueryPerformanceCounterを使うのが正当らしい。
CPU Temperature Monitor ようやく見つけた。
sizeofの戻り値でハマる。 VC++/CLIの配列って↓みたいな感じで使うわけだけど、 http://www.cycleof5th.com/tips/index.php?date=2007-06-06 array<unsigned char>^ s; s = gcnew array<unsigned char>(4096); に対して、 r = sizeof(s); のようにsのsizeofを取ると、リターンは4。言われてみれ</unsigned></unsigned>…
VC++/CLIのイベントの追加方法をマスターした。まさかダブルクリックだったとは…。
イベントが入らねぇ、と思ってたらイベントの追加方法を間違えてた。そうだ、.NET以来、なんだかすごく遠回りをするようになったんだよな。忘れてた。C++/CLIをやっているが、慣れないので吐き気がするくらい気持ちが悪い…。3日くらいやればなれるんだけど…。
VCのCLIでapp.configを使う方法がどうにもわからなくて悩んでたんだけど、ようやく解決した。 app.config を使うときの設定。 - りもーと・せんしんぐ Working with Configuration Files (app.config) in C++/CLI - CodeProject が、結局のところちょーめんどい…
VCではmath.hを普通にインクルードしてもM_PIが使えない。使えるようにするためには、 #define _USE_MATH_DEFINES #include <math.h>みたいに_USR_MATH_DEFINESを入れる必要がある。これはお約束?</math.h>
タスクマネージャでページフォルトを見ていたら、自作アプリがやたらとフォルトしてる。ちょっと眺めてみると、グローバルにmalloc&freeすべき部分を局所的にmalloc&freeしてた。そうだった。テストコードの時代を引きずってたのを忘れてた。
なんか、19日の朝になってるけど…、 VCにはsleep関数は存在しなくて、Sleepが存在する。初めて使った気がするな…。
WIN32APIで case WM_LBUTTONDBLCLK: みたいにダブルクリックを拾うには、 wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; としないといけない。知識としては覚えてるんだけど、よく忘れる。
VC2005(WIN32API)で今日の日付を出力するプログラム。 #include "stdafx.h" #include <stdio.h> #include <time.h> int _tmain(int argc, _TCHAR* argv[]) { __int64 ltime; struct tm local; _time64( <ime ); ltime += (9 * 60 * 60); _gmtime64_s(&local,<ime); char s</time.h></stdio.h>…
recvfromが-1で帰ってくると思ったら、またしてもVistaのバグだった。最悪。