VC2005 Professionalを使ってれば,OpenMP2.0がサポートされるというので,Pentium4 3.8GのHT状態を使い,MSDNのサンプルコード(下の続きを見てね)をコピペして繰り返し回数を1千万にし,/openmpを有効にして実行したら・・・
OpenMP無効の時と変化なしorz
なぜ?なぜなの??
“OpenMP & HT”の続きを読む>>
OpenMP無効の時と変化なしorz
なぜ?なぜなの??
“OpenMP & HT”の続きを読む>>
VC8から,ssanfがWarningを吐くようになった.理由はセキュリティらしく,今後はssanf_sを使わなくてはならない.
ただ,単純に"_s"を付ければいいわけではなく,キャラクタ等バッファサイズが不定のものは,受け付けるサイズを明示的に指定しないと強制終了してしまう.すなわち,
ただ,単純に"_s"を付ければいいわけではなく,キャラクタ等バッファサイズが不定のものは,受け付けるサイズを明示的に指定しないと強制終了してしまう.すなわち,
という感じ.char buf1[100], buf2[20], buf3[30];
int idata;
sscanf(buf1,"%s %d %s", buf2, sizeof(buf2), &idata, buf3, sizeof(buf3));
とりあえずBaseClassesのコンパイルはおいといて,Platform SDKのinclude/atlっていうディレクトリに"atlbase.h"があったので,VCのプロパティにパスを追加してビルドしてみた.すると,
問題の記述はこんな感じ.
ということで,pow(double,int)にcastしなきゃいけないようです.
なんじゃ,そら.おいおい,pow関数のオーバーロードで引っかかっちゃったよ.error C2668: 'pow' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
問題の記述はこんな感じ.
なんだよ,pow(int,int)ごときにcastやらなきゃいけないのかよ,と,pow(viX[j]-viX[k],2)
のように変更して再度ビルド.したらまたエラー!おい,なめてんのかよ!!と切れまくったが,どうも「新機能:ヘルプを参照」っていうエラーメッセージが気になり,pow関数を調べたら,pow((int)(viX[j]-viX[k]),2)
なんだよ!pow(int,int)つかえねーじゃん!!最悪だ.Visual C++ 2005 では、ISO 標準にさらに準拠するために大きく変更されています。pow(int, int) のオーバーロードは、使用できなくなりました。このオーバーロードを使用している場合、コンパイラは C2668 を発生することがあります。この問題を回避するには、最初のパラメータを double、float、または long double にキャストします。
ということで,pow(double,int)にcastしなきゃいけないようです.
Visual C++がいつのまにやらフリーになってるなんて,知らなかった...超カルチャーショック.
当然試さなきゃいかんでしょ,ということでダウンロードしてインストール.すでにVisual Studio.net 2003がインストールされてるので,Platform SDKはこいつのを流用した.
インクルード・実行・ライブラリの場所を設定して,いざビルドしてみると・・・
ちゃんとMicrosoftのページを読むと,手順4にて"corewin_express.vsprops"っていうファイルを編集しないといけなかったみたい.関係ないだろ,と思って無視したのがあだ.
設定後,VCを再起動してビルドすると・・・うまくいった!とりあえずWin32の簡単なのは問題なさそう.
あとはDirectShowを使っているプログラムがちゃんと動くかどうかだな.
当然試さなきゃいかんでしょ,ということでダウンロードしてインストール.すでにVisual Studio.net 2003がインストールされてるので,Platform SDKはこいつのを流用した.
インクルード・実行・ライブラリの場所を設定して,いざビルドしてみると・・・
なんじゃ,こりゃ.いかにも設定が悪そうなメッセージ.どうやら,さらに設定しないといけないことがあるようだ.error LNK2028: 未解決のトークン (0A000199) "extern "C" int __stdcall MessageBoxA(struct HWND__ *,char const *,char const *,unsigned int)" (?MessageBoxA@@$$J216YGHPAUHWND__@@PBD1I@Z) が関数 "int __cdecl main(void)" (?main@@$$HYAHXZ) で参照されました。
ちゃんとMicrosoftのページを読むと,手順4にて"corewin_express.vsprops"っていうファイルを編集しないといけなかったみたい.関係ないだろ,と思って無視したのがあだ.
設定後,VCを再起動してビルドすると・・・うまくいった!とりあえずWin32の簡単なのは問題なさそう.
あとはDirectShowを使っているプログラムがちゃんと動くかどうかだな.












