3Dを動かそうと思っております。
でも
dxsdk_oct2006
が、XPのPCでは、
展開(UnZIP)できません。
いつも、途中でハングです。
何度も、李トライしようとしていますが、
だめです。
どうすればいいのでしょうか?
VISTAのマシンだとうまくいくようです。
ウチの XP PRO SP3 マシンでは無問題だったよん。
ダウンロードしたファイルが壊れているとか。
ウイルス対策ソフトのリアルタイム検索が追いついていないだけとか。
ディスク容量が足らないとか。
単にマシンが遅くてハングアップしているように *見えている* だけとか。
DirectX SDKは、圧縮ファイルからテンポラリフォルダにインストーラ一式を展開して、
テンポラリフォルダのインストーラ本体を起動するようになっているので
テンポラリフォルダを掃除する常駐ソフトとか入っていたりしないだろうか?
#何故Oct2006?
みなさん
ありがとうござます。
検討してみます。
また状況をお知らせします。
やはり、メモリーが足りなかったようです。
よって、
これをインストールすることにより、
以前、
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
);
で、出ています。
#VC++2008ExpressEditionの例です。
プロジェクトのプロパティ(ダイアログ)を開いて、
構成プロパティ→全般→文字セットの項目を、
『マルチ バイト文字セットを使用する』
に変更すれば良いはずです。
了解しました。
今、それをVS2005でやってみたのですが、設定して、OKボタンを押すと、ハングしてしまいます。
やる前に、何かしておくことがあるのかな。
それと、VC++6でも同じことをやってみようとしたのですが、今度は、VC++6のアイコンでは、マルチバイトにすると言う設定自体が、見付からなかったようですし。どこでやるのかな。
どなたか、また、アドバイスいただけると、幸いです。
OKを押してハングするのは環境の問題でしょう。
1からプロジェクトを作成してみてはどうですか?
それでもだめなら、常駐ソフトの停止や、
メモリが少ないなら増設を検討してみるとか。
OS再インストールで直るかもしれませんね。
VC++6には設定はありません。
『マルチ バイト文字セットを使用する』
は定義にUNICODE(_UNICODE)が入るかどうかの違いです。
文字をマルチバイトにすると言う設定をした時に、
ハングする問題は解決しました。
前、ソース達も含め、プロジェクトは、USBのメモリーにあったのですが、
それをハードデフィスクのC:に持ってきたのです。
そうすると、メモリが前よりも多く取れたせいか、
すぐに設定可能となりました。
しかし、こうして、
構成プロパティ→全般→文字セットの項目を、
『マルチ バイト文字セットを使用する』
に変更しても、
依然、先と同様のエラーが出ます。
他に何が考えられますか?
エラーでは、やたらと、
“指示された型は関連がありません。変換には reinterpret_cast、C スタイ
ル キャストまたは関数スタイルのキャストが必要です。”
とか、言っていますが、
どうやって、キャストすればよいのでしょうか?
もう少しC言語の勉強されることをおすすめします。
理解せずにキャストしてコンパイルが通っても
妥当なキャストでなければ意図した実行結果にらないことが多いですよ。
お返事ありがとうございます。
> もう少しC言語の勉強されることをおすすめします。
謙虚に聴きます。
どういう意味でしょうか?
プロジェクトのプロパティ(ダイアログ)を開いて、
構成プロパティ→全般→文字セットの項目を、
『マルチ バイト文字セットを使用する』
に変更しても、
このキャストのエラーが消えなかった、
ので、
何とか、それを消したいと思っています。
どこが悪いのか。。。
今回のケースに限って言うなら、キャストとは例えると
What time is it now? に対して
今何時?と解釈するのが正しい処理であるならば、
掘った芋いずくんな(いじくるな)と解釈するのがキャスト
理解したうえで正しいキャストをするのであれば問題ないが
闇雲にただ誤ったキャストを追加するのであれば掘った芋にしかならない。
んで、今回の場合そもそもマルチバイト文字セットを使うのが間違いかもしれない。
掲示板の向こう側の俺たちは、書かれた内容以外のことは推測・妄想するしかない。
今みたいに情報提示不足な場合、アドバイスが必ずしも正しいとは限らないよ
InitApp の lpszClassName はどこから与えられた何型なのか確認。
っていうか、参考書なり参考 web-page なりあるなら提示して味噌。
http://www.h2.dion.ne.jp/~takusoft/directx8/d3d/chapter1/sec24/d3d_24.html
この辺を参考にしているのであればプロジェクトの設定としては
「ユニコード」を使うほうが正しい。
> 謙虚に聴きます。
> どういう意味でしょうか?
3Dを動かすのに、Unicode云々は関係のない分野で、
うらさんは早く本題を吟味したいのはわかります。
ただ、厳しい意見かもしれませんが、
> UNICODE(_UNICODE)が入るかどうかの違いです
と書きましたが、それでもエラーが消えない理由がわからないのであれば、
本当に基本的な事がわかっていないのか、調べずにまた質問したのか
のどちらかだと思ったので書きました。
エラー「C2664」はMSDNライブラリーで調べられます。
ZCHさんもそのことを言っているのだと思います。
「そして、そのエラーのヘルプを見て分からないのであれば、
C言語の「キャスト」について参考書なりで調べて方がいいです。」
といっているのだと思います。
tetrapodさんは、
「キャスト」だけでなく、「マルチバイト文字セット」・「ユニコード」
についても言っています。
すべて、MSDNライブラリーで調べられます。
しかし、「キャスト」は、C言語の参考書で調べたほうがいいと思います。
追伸、
エラー「C2664」の件もですが、
うらさんが「dxsdk_oct2006」でどんなことをやりたいのかを詳しく説明すること
も大切なことだと思います。
このままだと何も分からずに終了してしまう可能性があります。