トップページtech
920コメント252KB

Microsoft Visual C++ Toolkit 2003 質問箱

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん05/03/01 04:24:15
本家
http://msdn.microsoft.com/visualc/vctoolkit2003/

関連スレなどは>>2以降で
0446デフォルトの名無しさん2005/09/30(金) 15:24:28
sseとかの有無は合わせてるのか?
04474402005/09/30(金) 16:18:38
>>443
そうなんです。あやしすぎます。

>>444
それかもですねぇ。

>>445
MSVC用ってだけなんで個々(VC6, VC7など)の cl.exe 間の相違については考慮
してないのかも。もうちょっと詳しく見てみます。

>>446
MMXの使用有無は試しました。使っても使わなくても同一のMP3ファイルが
できました。SSE*は私のCPUにはついてないので試せないですorz
0448デフォルトの名無しさん2005/09/30(金) 16:25:31
最適化が影響与えてるとか
0449デフォルトの名無しさん2005/10/05(水) 00:19:34
>>447
MMXの有り無しで違いがないなんて普通はないはず。
MMX整数を使えば精度が落ちる。
ちゃんとMMXが使われているかどうかアセンブラコードを出力して確認してみろ。
0450デフォルトの名無しさん2005/10/24(月) 10:39:12
クラスの内部でconstを使った定数を使いたいのですが、どのように書けばよいのでしょうか?
0451デフォルトの名無しさん2005/10/24(月) 17:14:34
>>450
class hoge
{
    static const int Foo = 1;
};
0452デフォルトの名無しさん2005/10/25(火) 13:59:57
>>449
>MMX整数を使えば精度が落ちる
整数演算で精度は落ちないだろ?

MMXレジスタで数値オーバーするような状況に
MMXを適用してるとしたらプログラムがタコ
0453デフォルトの名無しさん2005/10/25(火) 14:18:37
>>452
わろた
0454デフォルトの名無しさん2005/10/26(水) 00:41:03
>>452
アホ?
それともプログラミングしたことないのか?
0455デフォルトの名無しさん2005/10/26(水) 00:56:57
流れも読まずに飽和演算の動きが違うからと言ってみる
0456デフォルトの名無しさん2005/10/26(水) 02:06:51
まあそう言ってやるな。
つまるところ有効精度の問題だ。
MMXだとDWORDx2を使うと、汎用レジスタ使った方が早い。
従ってMMX使う場合、まあWORDx4で演算することになる。
乗除算で有効精度はどんどん落ちる。
あと、・整数で演算するからといって、演算対象が整数だとも限らん。
(判り易く10進数で例示すると、 123.45 * 100 = 12345 (整数化))
0457デフォルトの名無しさん2005/10/26(水) 02:30:00
>>452
オーバーフローなんか精度云々以前の問題だろ。
結果が全然違ってくるぞ。
04584402005/10/26(水) 05:01:29
すんませんです。私のせいかも。まだ検証していません。
もしお暇な方がいらっしゃいましたら検証おながいします。

ほんとにすんません。
0459デフォルトの名無しさん2005/10/26(水) 08:49:18
>>456
> MMXだとDWORDx2を使うと、汎用レジスタ使った方が早い。
嘘つくなって。
しかも有効精度とかいってるあたり、何か勘違いしてるだけのような気が。

> あと、・整数で演算するからといって、演算対象が整数だとも限らん。
ヒント:標本化 → 量子化 → 符号化
0460デフォルトの名無しさん2005/10/26(水) 17:37:04
わろた。
全然トンチンカンなヒントになってる。
それとちゃんと説明するクセをつけたほうがいいぞ。
じゃないと自分でもわかったつもりになって終わるし、
突っ込むほうだって範囲が広すぎてイヤになる。
0461デフォルトの名無しさん2005/10/26(水) 17:52:13
>>459
>嘘つくなって。
アスロンだと違うのかな?
Pen3/4で非常に苦労してるんだが?
0462デフォルトの名無しさん2005/10/26(水) 18:11:43
>>452
8bitで表わせる範囲の数(0-255)であっても
16bit(WORD)で演算するのはちょっと精度不足だよ。
せいぜい10bit程度しかシフトできないんで、DWORDで計算するのとでは
誤差の出方が違ってくる。
実際プログラミングして試してみれ。
0463デフォルトの名無しさん2005/10/26(水) 22:14:36
あ、ごめん。
いきなり10bitなんて言っても何のことだか分からないよね。
これはある演算をするときにオーバーフローしないぎりぎりの精度を保つときの値で
別の演算には通用しない。(一般には8bit以下しかシフトできない)
が、これでも精度落ちするってこと。
0464デフォルトの名無しさん2005/10/27(木) 03:32:00
「精度」と言う単語を誤用している人間が居るので話がややこしくなる。
0465デフォルトの名無しさん2005/10/27(木) 09:01:26
>>464
俺にはどうややこしくなるのかさっぱりわからんが?
何と混同するっていうの?
0466デフォルトの名無しさん2005/10/27(木) 09:35:51
>>464
ちょっと、どう誤用なのか説明してくれ
http://www.google.com/search?hl=ja&lr=lang_ja&safe=off&ie=sjis&oe=sjis&q=%97L%8C%F8%90%B8%93x
0467デフォルトの名無しさん2005/10/27(木) 10:43:07
>>466
計算精度、有効桁数と言えってことだろうね。
でも誰も意味を取り違えたりしないって。
はっきり言って議論に水さしする、瑣末にこだわる嫌な人って思われるさ。
0468デフォルトの名無しさん2005/10/27(木) 13:03:07
そんな事より >>462 の言っている事がサッパリ分からないヘタレな俺に
詳しく説明してくれまいか
0469デフォルトの名無しさん2005/10/27(木) 14:09:50
>>468
MPEGのデコーダーでそんなのがあった気がする。
32bit-MMXだと精度不足になるだとか。
俺がよく知ってる事例だと、YUV->RGB変換でのMMX計算とかかな?
04704682005/10/27(木) 15:38:00
>>469 さんありがとぅ、でもそう言うのじゃないんです

>>462
> 8bitで表わせる範囲の数(0-255)であっても
> 16bit(WORD)で演算するのはちょっと精度不足だよ。
この場合、最大8bitの整数同士の演算結果を16bitで表すのだから
オーバーフローやアンダーフローも起こり得ないのに「精度不足」
と言うのが分からない

> せいぜい10bit程度しかシフトできないんで、DWORDで計算するのとでは
> 誤差の出方が違ってくる。
整数演算の結果をなぜシフトする必要があるのか?整数演算での誤差?


まさかとは思うが、固定小数点での演算を整数演算と言っているの?
0471デフォルトの名無しさん2005/10/27(木) 16:53:12
「どんな演算をするか」を定義しないで話を進めても駄
目だろ。たとえば、Nbit同士の加算なら2Nbitのワーク
スペースで2^N回実行可能。

a_i, b_i をNbitとして c = Σa_i b_i を並列でやるな
ら各乗算結果は2Nbit幅必要。加算結果はΣの数に依る。

バタフライ演算とかでcを次段の乗算係数として用いる
場合、誤差を出さないよう幅を拡張したルーチンに切り
替える場合もあるし、誤差が許容範囲ならNbit演算ルー
チンを使いまわすためにNbitに丸めることもある。

但し、ただ丸めただけでは誤差がひどいので最上位ビッ
トがセットされている状態に丸め(もちろん四捨五入し
た後)、何bitシフトしたかを覚えておいたりする(仮
想的な浮動小数点数のようなもの)。

アルゴリズムによっては上記ビット数を厳密に守らなく
ても良い成果を出す方法もある(加減算を交互に配置す
る、など)。

MMXで誤差無くす方法なんてなんぼでもあるだろ。
面倒いけど。
0472デフォルトの名無しさん2005/10/27(木) 21:41:47
どうしていつの間にか整数演算になっちゃったんだろう?
MPEG音声圧縮の話なんだろ、元々は。
0473デフォルトの名無しさん2005/10/27(木) 21:45:42
しかもVCTKには関係ない話題だ。
なんかVC++のよろず質問スレと勘違いされている。
0474デフォルトの名無しさん2005/10/28(金) 02:05:29
元の質問はスレ違いでもないと思うけど
0475デフォルトの名無しさん2005/10/28(金) 17:08:48
VCTK2003でプリコンパイル済みヘッダ使う場合、/Ycと/YuのオプションつければOKですか?
あと、/Yuでパス指定する場合はフルパスじゃないとだめですか?

今までVC++6.0ばっかり使ってきたんで、この辺さっぱりわからないですorz
0476デフォルトの名無しさん2005/10/28(金) 17:26:38
VC++6でプロジェクト作ったらわかりそうなもんだが
0477デフォルトの名無しさん2005/10/28(金) 20:17:31
>>475
VC6のプロジェクトの設定(プロパティかも)をじっくり見ろ。
0478デフォルトの名無しさん2005/10/28(金) 21:15:57
ブルジョワどもめ。
0479デフォルトの名無しさん2005/10/29(土) 09:31:16
あるえ
0480デフォルトの名無しさん2005/11/01(火) 20:43:08
>>459
Pentium4のデータだが、全命令でそうだとは言わないが、
大体、MMXは汎用IA32命令の4倍の時間がかかるよ。
これでも、嘘つくなってって言うのか?

汎用命令
MOV レイテンシ 0.5 スループット 0.5
ADD レイテンシ 0.5 スループット 0.5

MMX整数命令
MOVD mm,r32 レイテンシ 2 スループット 1
MOVD r32,mm レイテンシ 5 スループット 1
PADDD/PANDなど レイテンシ 2 スループット 1
0481デフォルトの名無しさん2005/11/01(火) 21:12:47
>>480
レイテンシの意味わかってる?
0482デフォルトの名無しさん2005/11/01(火) 22:29:13
レイテンシ:
 IA-32 命令を構成しているすべてのマイクロオペレーション
 (μOP) の実行が実行コアで完了するのに要するクロック・サイクル数。
スループット:
 発行ポートが同じ命令を再度自由に受け入れられるようにな
 るまで待たなければならないクロック・サイクル数。多くの
 IA-32 命令は、命令のスループットのほうがレイテンシより
 もかなり小さい。
0483デフォルトの名無しさん2005/11/01(火) 22:42:53
いかにレイテンシを隠蔽するかが問題。
・実行コアへのμOPの流入量を最大にする
・インターリーブしてリソースの競合(ポート、実行ユニット)を避ける。
・クリティカルパス上の依存関係チェーンのレイテンシを最小にする。

俺はスループットは殆ど考慮しない。
0484デフォルトの名無しさん2005/11/02(水) 00:59:59
ALUとSSE2を同時に回せ
0485デフォルトの名無しさん2005/11/02(水) 11:06:09
アルゴリズムレベルから最適化すべし。
終了。
0486デフォルトの名無しさん2005/11/23(水) 02:26:10
ハイキョってるなあ・・・
0487デフォルトの名無しさん2005/11/23(水) 03:14:05
まぁ2005Express出ちゃったしねぇ…。
0488デフォルトの名無しさん2005/11/23(水) 04:57:20
Microsoft Visual C++ Toolkit 2005は出るの?
0489デフォルトの名無しさん2005/11/23(水) 09:26:01
そのうち
0490デフォルトの名無しさん2005/11/23(水) 11:34:34
Expressがこのままフリー提供になってVCTKの代わりになっちゃうんじゃねぇかしら。
0491デフォルトの名無しさん2005/11/23(水) 12:10:04
フル機能を持つMicrosoft Visual C++ Toolkit 2005が出るとしたら
8Pro以上がそれなりに無意味になるな。
Expressか、せいぜいクラスデザイナのあるStandard辺りを買っておけば良いわけだ。

そんなわけでやっぱりVCTK2005は出さないかもなぁ…。
0492デフォルトの名無しさん2005/11/23(水) 12:11:52
いやでもそれをやったのがVCTK2003+VC7 Standardなのか
とはいえそれも他社に押される形だったし、
最初からその辺考えられる今回は無理かねぇ。

それとも一度やったことは続けるのかね。
0493デフォルトの名無しさん2005/11/23(水) 19:50:02
VCTKを無償公開したときの口実に、2003stdのユーザにも最適化コンパイラを
提供するとかいうのがあったはずなので、VCTK2005は出ないと思う。
たぶん>>490の通りになるかと。
0494デフォルトの名無しさん2005/11/23(水) 20:28:43
どうせ2005 Expressも今までと同等の最適化はある。
0495デフォルトの名無しさん2005/11/23(水) 23:00:03
>>493
その理屈だと、Express、2005stdユーザにもPGOコンパイラを、ってならないのか
0496デフォルトの名無しさん2005/11/23(水) 23:49:47
PGOはコンパイラ単体の機能実現できないんだし、いいんじゃね?
さすがにPGO欲しいなら買えばいいとおもうんだが。
0497デフォルトの名無しさん2005/11/23(水) 23:50:28
修正:

PGOはコンパイラ単体の機能じゃ実現できないんだし、いいんじゃね?
さすがにPGO欲しいなら買えばいいとおもうんだが。
0498デフォルトの名無しさん2005/11/23(水) 23:54:46
> PGOはコンパイラ単体の機能じゃ実現できない
ほんとかよ
0499デフォルトの名無しさん2005/11/24(木) 01:02:33
そらそうだろ。
プロファイル結果に基づいて最適化する機能なんだから。
プロファイラがなくてどうするよ。
0500デフォルトの名無しさん2005/11/24(木) 01:09:16
なんでVCTKがコンパイラ単体の機能しか付かない事になってんのよ
0501デフォルトの名無しさん2005/11/24(木) 01:13:15
ttp://www.microsoft.com/japan/msdn/vs/vc/profileguidedoptimization.asp
ここを見る限りコンパイラ単体の機能じゃないな。
プロファイラって言うよりリンカが特別なコードを挿入して
一度アプリケーションを実行することで、PGOに必要なファイル(.pgc)を生成。
その後再コンパイルする時に、プロファイル結果(.pgc)を利用するという動作みたい。
ってことでPGOを行うには、コンパイラとリンカが対応する物の必要がありそう。
0502デフォルトの名無しさん2005/11/24(木) 01:20:13
>>500
それもそうだな。
495のPGOコンパイラって表現に反応しすぎた。失礼。

まぁどの道ExpressじゃPGOは利用できないだろうしなぁ。
VCに限って言えば、今回の目玉だろうしなぁこれ。
0503デフォルトの名無しさん2005/11/24(木) 01:23:28
うんだからVCTK2003にもリンカくらいついているという話
0504デフォルトの名無しさん2005/11/24(木) 01:25:10
おっと503は501宛ね
0505デフォルトの名無しさん2005/11/24(木) 03:13:55
っていうか2003で十分じゃない?おまいらも.NETなんてどうでもいいんだべ?
0506デフォルトの名無しさん2005/11/24(木) 04:01:37
VCTK+WinSDKでは、リソース関連のヘッダが不足してて苦労しない?
どうしてる?
0507デフォルトの名無しさん2005/11/24(木) 04:46:26
どうせ自分で組むので気にならない
0508デフォルトの名無しさん2005/11/24(木) 07:54:08
ぷらっとふぉ〜むSDKとだいれくとえっきすSDKをフルインスコしても無理か?
0509デフォルトの名無しさん2005/11/24(木) 15:52:54
Expressには単純なプロファイラも付かないの?
0510デフォルトの名無しさん2005/11/24(木) 16:29:26
Express期限があるから安心して使えねえ
0511デフォルトの名無しさん2005/11/29(火) 01:11:45
これでコンパイルしたLAMEのバイナリでエンコしたMP3ファイルと
公式(?)バイナリでエンコしたMP3ファイルが一致しない件ですが

cl のオプションで浮動小数点の精度に関するものは
/Op と /QIfist しかないよう。どちらか片方と両方同時も
試しましたがやはり一致しませんでした。

こんな状況ではLAMEで作ったMP3の音質をああだこおだ議論している
人たちがうさんくさくて仕方がありません。
0512デフォルトの名無しさん2005/11/29(火) 01:44:20
>>440 の方? 試したコンパイラはこれ?
ICL (RareWareで配布されているバイナリ)
Services for Unixに付属 gcc-3.3
VB.NET Standard付属のcl.exe
MSVC 2003

このうち MSVC 2003 のだけ結果が違うの?
0513デフォルトの名無しさん2005/11/30(水) 00:45:56
以前試したときはSFUのとICLのは一致していたのですが曲によっては
一致しないらしく今回は一致しませんでした。つまりすべて一致せずです。
0514デフォルトの名無しさん2005/12/12(月) 17:18:24
素直にFIIS console(v3以降)CBR320Kで。
0515デフォルトの名無しさん2005/12/13(火) 05:35:50
Platform SDKのサンプルのVListVwをmakeしようとすると

LINK : fatal error LNK1104: cannot open file 'LIBCMTD.lib'
NMAKE : fatal error U1077: 'link' : return code '0x450'
Stop.
ってエラーが出ます。助けてください
0516デフォルトの名無しさん2005/12/13(火) 14:58:19
>>515
どっか弄った?
どうやってmakeした?nmake?
そのままmakeしたのならデバッグバージョンのlibmtを使うとは思えないんだけど?
VCTK2003にはlibmtdは付属してないんでね。
まあ何にしろretailビルドに変えてみては。
0517デフォルトの名無しさん2005/12/13(火) 15:19:03
retailビルドって何か新鮮だな、bulkビルドみたいな
0518デフォルトの名無しさん2005/12/13(火) 15:39:39
>>516
nmake -f makefile
でやったのだけど・・・
0519デフォルトの名無しさん2005/12/13(火) 16:07:35
>>518
えっと、じゃあ環境を変えて再チャレンジ。
Set Windows XP 32-bit Build Environment (Retail)
からやってみそ。
0520デフォルトの名無しさん2005/12/13(火) 16:19:07
あと
>>517
Debug Build / Retail Build
っていつも言ってるけど、そんなに新鮮に聞こえるほど
ローカルな用語だったの?
0521デフォルトの名無しさん2005/12/13(火) 16:32:16
普通はdebug/releaseを使うだろ
0522デフォルトの名無しさん2005/12/13(火) 16:34:57
Retailなんて初めて聞いたな
PCパーツか
0523デフォルトの名無しさん2005/12/13(火) 16:54:47
そんなこと無いだろ。
debug/retailって使うよ。
スイッチだって/debugと/retailだし。
debug/releaseというよりdebug/retailというほうがメジャーだよ。
確かに、Visual Studioではdebug/releaseだったけど。
0524デフォルトの名無しさん2005/12/13(火) 19:10:16
debug/release の検索結果 約 33,500 件中 1 - 10 件目 (0.19 秒)

debug/retail の検索結果 約 422 件中 1 - 10 件目 (0.07 秒)
0525デフォルトの名無しさん2005/12/13(火) 19:29:59
debug release 約 7,160,000 件
debug retail 約 482,000 件

そりゃまあ検索したらreleaseが多いのは当然だろう。
Visual Studio使ってる奴が一杯いるから。
でもWindows VisualStudioを除くとどうなることやら。
同じWindowsでもCEとかembeddingだとまた違ってくるぞ。
0526デフォルトの名無しさん2005/12/13(火) 19:40:08
retail版ならおかしくないが、retailビルドって変な気がする
0527デフォルトの名無しさん2005/12/13(火) 19:44:50
>>525
> Visual Studio使ってる奴が一杯いるから。
いっぱいいるならdebug/releaseの方がメジャーだろうに。

参考までに
debug release -Visual -Studio の検索結果 約 4,780,000 件中 1 - 10 件目 (0.30 秒)
debug retail -Visual -Studio の検索結果 約 286,000 件中 1 - 10 件目 (0.26 秒)
0528デフォルトの名無しさん2005/12/13(火) 20:00:59
なんか急に強気になったよな。>>520と同一人物とは思えないくらい。
まさか複数居るわけ無いし。

debug/release組は、複数居るのは確かだけど。
0529デフォルトの名無しさん2005/12/13(火) 20:05:46
retail という用語には、商業上の「小売り」の意味合いが出てくる。
有償・無償の意味を一切もたない release の方が、Linuxなどでも使うべき汎用的な用語だと思う。
そんなわけでreleaseの勝利。

以下、スレテーマに戻る
0530デフォルトの名無しさん2005/12/13(火) 20:17:35
なんでもいいよ。バグが入ってることには変わりないんだから。
0531デフォルトの名無しさん2005/12/13(火) 20:41:58
>>519
ありがとうございます凡ミスしてますた。
setenv /XP32 /RETAIL
で起動してみたらエラーが出てPlatform SDKのインストール作業をしてなかったことに気がつきますた(HDに入っているだけの状態)。
パスは正常に通してあって、今まで何事もなく使ってたので大丈夫かと思ってました。

setenv /XP32 /RETAIL
nmake /f makefile

で無事にいけますたありがとうございます。
0532デフォルトの名無しさん2005/12/13(火) 20:45:42
Microsoft Platform SDK\Samples\Begin\Simple
ぼっきしますた
0533デフォルトの名無しさん2005/12/13(火) 21:03:56
release build の検索結果 約 134,000,000 件
retail build の検索結果 約 34,800,000 件
約4倍の差だけど、逆にたった4倍しか差が無いのって思わん?>みんな
0534デフォルトの名無しさん2005/12/13(火) 21:08:47
"release build" 272000
"retail build" 11200
0535デフォルトの名無しさん2005/12/13(火) 21:11:07
>>534
俺の言いたいことを見事に表してくれたな
533に意味が分かるだろうか
05365332005/12/13(火) 21:15:15
>>535
なんか俺に含むところでもあるの?
0537デフォルトの名無しさん2005/12/13(火) 21:19:06
"release build" の検索結果のうち microsoft.com からの約 528 件
"retail build" の検索結果のうち microsoft.com からの約 127 件
debug release の検索結果のうち microsoft.com からの約 66,100 件
debug retail の検索結果のうち microsoft.com からの約 11,000 件
0538デフォルトの名無しさん2005/12/13(火) 21:19:43
>>536
(ノ∀`) アチャー
0539デフォルトの名無しさん2005/12/13(火) 21:22:47
たった27倍の差しか無いってさ。

例えば
microsoft+buildだと226,000件
linux+buildだと375,000件
こういうのと同列で
retail+buildやrelease+buildの件数を比較しても
全然意味無いんだよ。

release buildとretail buildという熟語同士で比較するならともかく、ね。
0540デフォルトの名無しさん2005/12/13(火) 21:29:58
まあMSはリテール版のWindowsも作っているわけで。
リテール版Windowsの対義語はデバッグ版Windowsなのかな、と。

日本語(カタカナ)になるとニュアンスが変わるのかもしれないけどね。
0541デフォルトの名無しさん2005/12/13(火) 21:43:39
でもさあ、確かにMSも"retail build"って単語使ってるね。
0542デフォルトの名無しさん2005/12/13(火) 21:47:21
まあ何はともあれ、retailビルドってのをはじめて聞いただなどとほざく輩はおよびじゃないな。
0543デフォルトの名無しさん2005/12/13(火) 21:54:07
retail buildってrelease buildを標準語とすると、広島弁みたいなもんでしょ?
0544デフォルトの名無しさん2005/12/13(火) 21:55:17
失笑はしたけど意味は通じたしな。
0545デフォルトの名無しさん2005/12/13(火) 22:03:13
retail <-> bulk
って直結する短絡的な頭は幸せだなあ。
■ このスレッドは過去ログ倉庫に格納されています