VC

デバッグ

VC

今更ながら、VCのデバッグ。 Win32アプリケーションのデバッグ方法 [VC++の使い方] DebugBreakは使ったことがなかった。確かにそれは、こういう使い方向け。便利かも。

VistaでWinsockを使わない理由

VC

Vistaで動作するプログラムを作る場合、odawaraは基本的に.NETしか使わないようにしている。なぜかというと、昔、winsockのバグに当たって苦しんだことがあるから。 Vistaのバグ - odawaraの「はてな de メモ」 この時調べたのはあ、VistaにおけるWinsockはT…

WOW64の性能計測

VC

WOW64はコストがかかる - odawaraの「はてな de メモ」 昨日の続き。 XPの64bit環境で実行しました。win32がWOW64での実行。 ビルドはリリースビルド。下サイズのメモリを指定回数分memcpy()したときの時間を計測。16Bの場合はL1かL2に乗るはず。 環境 512MB…

WOW64はコストがかかる

VS VC

まぁ当たり前だよな。 http://d.hatena.ne.jp/egggarden/20090620/1245457823 特に呼び出しのコストが大きいはず。スループットはあんまり変わらないと想像しているが、どうだろう?そのうち試してみよう。

WOW64

VC

32bitなアプリケーションがWOW64経由で動作しているかどうか確認する方法。 BOOL bIsWow64 = false; BOOL is_64 = IsWow64Process(GetCurrentProcess(), &bIsWow64); WOW64経由だとIsWow64にtrueが入ってくる。

C++/CLIからxmlを読む

VC

CLIで設定ファイルを読み込むのは超めんどくさいと思っていたのだけど、xmlを使うと楽になることを知る。 だらだら日記 C++/CLIと.netでiniファイル的な事をする場合は? おー、これは便利だ。

パソリとMySQL

VC

全然関係ないけど、パソリとMySQLをいじって遊ぶ。なかなかおもしろいな、最近Felica使うことだし、PaSoRi買ってもいいか。

LPVOIDを.NETで置き換え

VC

Win32でLPVOIDを使っていたものを.NETからimportする場合はSystem::IntPtrとして置き換えが可能らしい。まだ動かしていないが。

WindowsのPAGE_SIZE

VC VS

そういえば基本的なことを知らなかったので調べてみた。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 i64 suffix

VC

VCでINT64を扱う場合、 a = 12345678i64;とできる。以下が参考になる。 Shudo's Notes (2003/9)

bswap

VC

VCでお手軽bswap _byteswap_uint64, _byteswap_ulong, _byteswap_ushort | Microsoft Docs 長さもいろいろ用意されていて便利。特に64bit環境でx86とppc64を行き来してる場合なんかに。

64bit型のprintf

VC

I64xとして出せばOK。 ULONG lr = 0x1234567812345678; printf("0x%016I64x\n",lr);参考: プロセスのI/O操作情報を取得 - プログラミングのメモ帳(C/C++/HSP)

GDI

VC

2008-07-01 GDIのアクセラレーションってたまにほしくなる気がするんだけど、意外とテクニック次第で何とかなることが多い。上に書いてあるとおり、Flashだって昔はなんのアクセラレーションもかかってなかったんだから、現代のCPUなら意外と動くものがほと…

CPU数

VC

スレッドの本数を決めるに当たって、CPU数を取得するのってどうやるんだろうと思ったら、意外と簡単だった。 http://shoppers-jp.com/tech/sdk012.html SYSTEM_INFO si; GetSystemInfo(&si); printf("プロセッサ数 : %d\n", si.dwNumberOfProcessors); とす…

WindowsのUDPでsendtoできる最大サイズ

VC

探してみてもsendtoの最大サイズがわからなかったので調べてみた。 for(int i=0;i

Drawing::Bitmap

VC VS

内部的には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…

sprintfのワーニング

VC

VC8だったからかsprintf_sが導入されて、sprintfで怒られるようになったんだけど、Linuxとソースが共通なんだから修正はできない。というわけで、下を参考にして、 Visual C++ 2005でのstrcpy等非推奨 (warning C4996) - 開発覚え書き プロジェクトのプロパ…

ExpressEdition

VC

Visual C++ Tools and Features in Visual Studio Editions | Microsoft Docs CRTのソースがついてこないのは、ちょっとめんどいな。デバッグがちょいうざい。

rtdsc

VC

http://d.hatena.ne.jp/Willamette/20060705/1152100692 デュアルコア以上のCPUでは、rtdsc命令が異なるコアで実行される場合があるので、こんな時はQueryPerformanceCounterを使うのが正当らしい。

CPU Temperature Monitor

VC

CPU Temperature Monitor ようやく見つけた。

sizeof

VC

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>…

イベントの追加 その2

VC

VC++/CLIのイベントの追加方法をマスターした。まさかダブルクリックだったとは…。

イベントの追加

VC

イベントが入らねぇ、と思ってたらイベントの追加方法を間違えてた。そうだ、.NET以来、なんだかすごく遠回りをするようになったんだよな。忘れてた。C++/CLIをやっているが、慣れないので吐き気がするくらい気持ちが悪い…。3日くらいやればなれるんだけど…。

app.config

VC

VCのCLIでapp.configを使う方法がどうにもわからなくて悩んでたんだけど、ようやく解決した。 app.config を使うときの設定。 - りもーと・せんしんぐ Working with Configuration Files (app.config) in C++/CLI - CodeProject が、結局のところちょーめんどい…

M_PI

VC

VCではmath.hを普通にインクルードしてもM_PIが使えない。使えるようにするためには、 #define _USE_MATH_DEFINES #include <math.h>みたいに_USR_MATH_DEFINESを入れる必要がある。これはお約束?</math.h>

ページフォルト

VC

タスクマネージャでページフォルトを見ていたら、自作アプリがやたらとフォルトしてる。ちょっと眺めてみると、グローバルにmalloc&freeすべき部分を局所的にmalloc&freeしてた。そうだった。テストコードの時代を引きずってたのを忘れてた。

Sleep

VC

なんか、19日の朝になってるけど…、 VCにはsleep関数は存在しなくて、Sleepが存在する。初めて使った気がするな…。

ダブルクリック

VC

WIN32APIで case WM_LBUTTONDBLCLK: みたいにダブルクリックを拾うには、 wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; としないといけない。知識としては覚えてるんだけど、よく忘れる。

日付を表示する

VC

VC2005(WIN32API)で今日の日付を出力するプログラム。 #include "stdafx.h" #include <stdio.h> #include <time.h> int _tmain(int argc, _TCHAR* argv[]) { __int64 ltime; struct tm local; _time64( &ltime ); ltime += (9 * 60 * 60); _gmtime64_s(&local,&ltime); char s</time.h></stdio.h>…

Vista

VC

recvfromが-1で帰ってくると思ったら、またしてもVistaのバグだった。最悪。