dxsdk_oct2006がXPマシンで展開出来ない

[戻る]
うら 2009/08/21(金) 01:01:16
3Dを動かそうと思っております。
でも
dxsdk_oct2006
が、XPのPCでは、
展開(UnZIP)できません。

いつも、途中でハングです。
何度も、李トライしようとしていますが、
だめです。

どうすればいいのでしょうか?
VISTAのマシンだとうまくいくようです。

tetrapod 2009/08/21(金) 09:55:19
ウチの XP PRO SP3 マシンでは無問題だったよん。

ダウンロードしたファイルが壊れているとか。
ウイルス対策ソフトのリアルタイム検索が追いついていないだけとか。
ディスク容量が足らないとか。
単にマシンが遅くてハングアップしているように *見えている* だけとか。

ISLe 2009/08/21(金) 23:37:50
DirectX SDKは、圧縮ファイルからテンポラリフォルダにインストーラ一式を展開して、
テンポラリフォルダのインストーラ本体を起動するようになっているので
テンポラリフォルダを掃除する常駐ソフトとか入っていたりしないだろうか?

#何故Oct2006?

うら 2009/08/22(土) 11:23:11
みなさん

ありがとうござます。
検討してみます。
また状況をお知らせします。

うら 2009/08/24(月) 23:04:58
やはり、メモリーが足りなかったようです。

よって、
これをインストールすることにより、
以前、
fatal error C1083: include ファイルを開けません。
'd3dx9.h': No such file or directory
と出ていたコンパイルは進みましたが、
まだ、下記のようなエラーがでます。
何をどうすれば、いいでしょうか?

1>プロジェクト 'Meshes_Test'、構成 'Debug|Win32' の中間出力ファイルを削除してい
ます。
1>コンパイルしています...
1>meshes.cpp
1>c:\vc_source__for_directx\meshes_test\meshes.cpp(46) : error C2440: '初期化
中' : 'LPCWSTR' から 'LPCSTR' に変換できません。
1>        指示された型は関連がありません。変換には reinterpret_cast、C スタイ
ル キャストまたは関数スタイルのキャストが必要です。
1>c:\vc_source__for_directx\meshes_test\meshes.cpp(66) : error 
C2664: 'CreateWindowExA' : 3 番目の引数を 'LPCWSTR' から 'LPCSTR' に変換できま
せん。(新しい機能 ; ヘルプを参照)
1>        指示された型は関連がありません。変換には reinterpret_cast、C スタイ
ル キャストまたは関数スタイルのキャストが必要です。
1>c:\vc_source__for_directx\meshes_test\meshes.cpp(222) : error 
C2731: 'WinMain' : 関数はオーバーロードできません。
1>        c:\vc_source__for_directx\meshes_test\meshes.cpp(222) : 'WinMain' の
宣言を確認してください。
1>c:\vc_source__for_directx\meshes_test\meshes.cpp(224) : error 
C2664: 'MessageBoxA' : 2 番目の引数を 'const wchar_t [16]' から 'LPCSTR' に変換
できません。(新しい機能 ; ヘルプを参照)
1>        指示された型は関連がありません。変換には reinterpret_cast、C スタイ
ル キャストまたは関数スタイルのキャストが必要です。
1>c:\vc_source__for_directx\meshes_test\meshes.cpp(229) : error 
C2664: 'MessageBoxA' : 2 番目の引数を 'const wchar_t [16]' から 'LPCSTR' に変換
できません。(新しい機能 ; ヘルプを参照)
1>        指示された型は関連がありません。変換には reinterpret_cast、C スタイ
ル キャストまたは関数スタイルのキャストが必要です。
1>c:\vc_source__for_directx\meshes_test\meshes.cpp(234) : error 
C2664: 'MessageBoxA' : 2 番目の引数を 'const wchar_t [11]' から 'LPCSTR' に変換
できません。(新しい機能 ; ヘルプを参照)
1>        指示された型は関連がありません。変換には reinterpret_cast、C スタイ
ル キャストまたは関数スタイルのキャストが必要です。
1>c:\vc_source__for_directx\meshes_test\meshes.cpp(254) : error 
C2664: 'UnregisterClassA' : 1 番目の引数を 'LPCWSTR' から 'LPCSTR' に変換できま
せん。(新しい機能 ; ヘルプを参照)
1>        指示された型は関連がありません。変換には reinterpret_cast、C スタイ
ル キャストまたは関数スタイルのキャストが必要です。
1>ビルドログ
は "file://c:\VC_Source__for_DirectX\Meshes_Test\Debug\BuildLog.htm" に保存され
ました。

1>Meshes_Test - エラー 7、警告 0

例えば、1番目のコンパイルエラーは、
HRESULT InitApp(HINSTANCE hInst) {
    WNDCLASSEX wcex = {
        sizeof(WNDCLASSEX),         // wcex.cbSize
        CS_CLASSDC,                 // wcex.style
        (WNDPROC)WndProc,           // wcex.lpfnWndProc
        0L,                         // wcex.cbClsExtra
        0L,                         // wcex.cbWndExtra
        hInst,                      // wcex.hInstance
        NULL,                       // wcex.hIcon
        LoadCursor(NULL,IDC_ARROW), // wcex.hCursor
        NULL,                       // wcex.hbrBackground
        NULL,                       // wcex.lpszMenuName
        lpszClassName,              // wcex.lpszClassName
        NULL                        // wcex.hIconSm
    };

の
最後から3行目
        lpszClassName,              // wcex.lpszClassName
で出ています。

2番目のエラーは、
    g_hWnd = CreateWindow(
        wcex.lpszClassName,
        lpszTitleName,
        WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        WIDTH + GetSystemMetrics(SM_CXDLGFRAME) * 2,
        HEIGHT + GetSystemMetrics(SM_CYDLGFRAME) * 2 + 
GetSystemMetrics(SM_CYCAPTION),
        GetDesktopWindow(),
        NULL,
        wcex.hInstance,
        NULL
        );
で、出ています。

ISLe 2009/08/25(火) 02:43:41
#VC++2008ExpressEditionの例です。

プロジェクトのプロパティ(ダイアログ)を開いて、
構成プロパティ→全般→文字セットの項目を、
『マルチ バイト文字セットを使用する』
に変更すれば良いはずです。

うら 2009/08/27(木) 10:47:33
了解しました。
今、それをVS2005でやってみたのですが、設定して、OKボタンを押すと、ハングしてしまいます。
やる前に、何かしておくことがあるのかな。
それと、VC++6でも同じことをやってみようとしたのですが、今度は、VC++6のアイコンでは、マルチバイトにすると言う設定自体が、見付からなかったようですし。どこでやるのかな。
どなたか、また、アドバイスいただけると、幸いです。

ZCH 2009/08/27(木) 21:17:42
OKを押してハングするのは環境の問題でしょう。
1からプロジェクトを作成してみてはどうですか?
それでもだめなら、常駐ソフトの停止や、
メモリが少ないなら増設を検討してみるとか。
OS再インストールで直るかもしれませんね。

VC++6には設定はありません。
『マルチ バイト文字セットを使用する』
は定義にUNICODE(_UNICODE)が入るかどうかの違いです。

うら 2009/08/29(土) 20:10:42
文字をマルチバイトにすると言う設定をした時に、
ハングする問題は解決しました。
前、ソース達も含め、プロジェクトは、USBのメモリーにあったのですが、
それをハードデフィスクのC:に持ってきたのです。
そうすると、メモリが前よりも多く取れたせいか、
すぐに設定可能となりました。

しかし、こうして、
構成プロパティ→全般→文字セットの項目を、
『マルチ バイト文字セットを使用する』
に変更しても、
依然、先と同様のエラーが出ます。

他に何が考えられますか?

エラーでは、やたらと、
“指示された型は関連がありません。変換には reinterpret_cast、C スタイ
 ル キャストまたは関数スタイルのキャストが必要です。”
とか、言っていますが、
どうやって、キャストすればよいのでしょうか?

ZCH 2009/08/30(日) 21:29:52
もう少しC言語の勉強されることをおすすめします。
理解せずにキャストしてコンパイルが通っても
妥当なキャストでなければ意図した実行結果にらないことが多いですよ。

うら 2009/08/31(月) 11:19:58
お返事ありがとうございます。

> もう少しC言語の勉強されることをおすすめします。

謙虚に聴きます。
どういう意味でしょうか?

プロジェクトのプロパティ(ダイアログ)を開いて、
構成プロパティ→全般→文字セットの項目を、
『マルチ バイト文字セットを使用する』
に変更しても、
このキャストのエラーが消えなかった、
ので、
何とか、それを消したいと思っています。
どこが悪いのか。。。

tetrapod 2009/08/31(月) 11:55:29
今回のケースに限って言うなら、キャストとは例えると

What time is it now? に対して
今何時?と解釈するのが正しい処理であるならば、
掘った芋いずくんな(いじくるな)と解釈するのがキャスト

理解したうえで正しいキャストをするのであれば問題ないが
闇雲にただ誤ったキャストを追加するのであれば掘った芋にしかならない。

んで、今回の場合そもそもマルチバイト文字セットを使うのが間違いかもしれない。
掲示板の向こう側の俺たちは、書かれた内容以外のことは推測・妄想するしかない。
今みたいに情報提示不足な場合、アドバイスが必ずしも正しいとは限らないよ

InitApp の lpszClassName はどこから与えられた何型なのか確認。
っていうか、参考書なり参考 web-page なりあるなら提示して味噌。

http://www.h2.dion.ne.jp/~takusoft/directx8/d3d/chapter1/sec24/d3d_24.html
この辺を参考にしているのであればプロジェクトの設定としては
「ユニコード」を使うほうが正しい。

ZCH 2009/08/31(月) 19:27:50
> 謙虚に聴きます。
> どういう意味でしょうか?

3Dを動かすのに、Unicode云々は関係のない分野で、
うらさんは早く本題を吟味したいのはわかります。

ただ、厳しい意見かもしれませんが、
> UNICODE(_UNICODE)が入るかどうかの違いです
と書きましたが、それでもエラーが消えない理由がわからないのであれば、
本当に基本的な事がわかっていないのか、調べずにまた質問したのか
のどちらかだと思ったので書きました。

ITO 2009/08/31(月) 20:43:46
エラー「C2664」はMSDNライブラリーで調べられます。
ZCHさんもそのことを言っているのだと思います。
「そして、そのエラーのヘルプを見て分からないのであれば、
C言語の「キャスト」について参考書なりで調べて方がいいです。」
といっているのだと思います。
tetrapodさんは、
 「キャスト」だけでなく、「マルチバイト文字セット」・「ユニコード」
についても言っています。
すべて、MSDNライブラリーで調べられます。
しかし、「キャスト」は、C言語の参考書で調べたほうがいいと思います。

ITO 2009/08/31(月) 20:51:30
追伸、
エラー「C2664」の件もですが、
うらさんが「dxsdk_oct2006」でどんなことをやりたいのかを詳しく説明すること
も大切なことだと思います。
このままだと何も分からずに終了してしまう可能性があります。

ITO 2009/08/31(月) 21:01:57
ZCHさんも、「マルチバイト文字セット」・「ユニコード」の件を言ってましたね。
失礼しました。

ISLe 2009/09/01(火) 00:59:26
提示されているエラーログによると、Win32API名はANSI版が選択されているのに、引数
側はワイド文字になっているのが不可思議。

Oct2006ってVC2005のプロジェクトファイルが付いてたっけ?
VC6用のプロジェクトを変換したなら自動的にマルチバイトになる。
VC6のプロジェクトテンプレートが優先されるので変更できなかった気がする。
あるいは変更してもテンプレートが優先されるので無効だったかもしれない。
なのでWinAPIはANSI版が常に選択されるのかもしれない。


lpszClassNameやlpszTitleNameの宣言はワイド文字型が使用されているような気がす
る。
VC2002以降はデフォルトでワイド文字を使う設定になっている。
ワイド文字専用に書かれたソースコードをコピペして使っていたりしないだろうか?
UNICODE,_UNICODEマクロを自分で定義していたり、WCHAR(LPCWSTR,LPWSTR)とかL"文字
列"を使っていたりしないだろうか?

PATIO 2009/09/01(火) 13:28:25
> このキャストのエラーが消えなかった、
> ので、
> 何とか、それを消したいと思っています。
> どこが悪いのか。。。

キャストに関して聞いてるのでキャストの意味がわかっていないと
解釈されたのだと思います。
だから、C言語の勉強をした方が良いのではと言う話になったのでしょう。

正確にはC++言語の勉強ですね。
特に指定していなければ、VC++は、拡張子がcppのファイルを
C++言語のソースファイルであると認識してコンパイルします。
reinterpret_castはC++言語で強制的にその型にあわせてしまうキャストで
C言語では、通常のキャストに近い動きをします。

で、キャストに関する知識はC言語、もしくはC++言語の勉強をしていれば、
知っているべき知識になります。
対処法に関してもその知識の中に含まれますし、入門書のキャストの解説でも
その辺の知識については触れられているはずです。
掲示板で聞くよりもご自分で入門書等で確認された方が勉強になると
思いますので、一度確認されることをお勧めします。

古いスレッドには追加発言できません。