現在DirectX9.0SDKが入っています。
時々DirectXのサンプルで7や8のものもあり、それらを9でコンパイルしたいときは
どうしたら良いのでしょうか?
コンパイルするとd3dx8.hが見つかりませんなどと出てきます。
最初は関数名や型で8がつくものを9に強引に置き換えていましたが、
関数や定義によっては8から9にかけて削除されたものや仕様が変わってしまったものも
多く、これは労力がかかりすぎると思いあきらめました。
8.0のSDKを探してきてダウンロードし、VisualStudioの設定でできる
インクルードファイルの位置を9.0から8.0のファイルパスに置き換えるしかないのでしょうか?
No.1ベストアンサー
- 回答日時:
DirectXはバージョンが変わると同じ関数でも引数が変わったりしてうまく動きませんね。
August 2007バージョンはどうでしょう
http://www.microsoft.com/downloads/details.aspx? …
この回答への補足
リンク先のものを早速導入してみました。
英語で
* Direct3D8 and all of the earlier versions
* DirectInput7 and all of the earlier versions
* DirectX8-era HRESULT conversion routines
などとD3D8が搭載されてる最後のバージョンがリンク先のものだと掲載されていますが、
それを入れてパスを通してからコンパイルしてみるとやはり
fatal error C1083: include ファイルを開けません。'd3dx8.h': No such file or directory
と出てきました。
ためしにIncludeフォルダを見てみるとd3d8.hやd3dx9.hはあるのに
d3dx8.hが無いのが原因のようです。
これはどう対応すべきなのでしょうか・・。
ひょっとするとあるバージョンを境にd3dx8.hが搭載されなくなったとか・・?
No.2
- 回答日時:
こんにちは。
確かに付属してこないらしいです。検索してみたら、幾つか其れらしき文章を見かけました。
一応、当方のPC上では、DirectX 7~9まで全て使える状態なので、d3dx8.hも存在します。
其のまま書くとマズイので書き直しています(この程度のコードなのだが・・・)。
#ifndef __D3DX8_H__
#define __D3DX8_H__
#include "d3d8.h"
#include <limits.h>
#ifndef D3DXINLINE
#ifdef _MSC_VER
#if (_MSC_VER >= 1200)
#define D3DXINLINE __forceinline
#else
#define D3DXINLINE __inline
#endif
#else
#ifdef __cplusplus
#define D3DXINLINE inline
#else
#define D3DXINLINE
#endif
#endif
#endif
#define D3DX_DEFAULT ULONG_MAX
#define D3DX_DEFAULT_FLOAT FLT_MAX
#include "d3dx8math.h"
#include "d3dx8core.h"
#include "d3dx8tex.h"
#include "d3dx8mesh.h"
#include "d3dx8shape.h"
#include "d3dx8effect.h"
#endif //__D3DX8_H__
この回答への補足
わざわざ探してくださりありがとうございます!
ただ、残念なことに
#include "d3dx8math.h"
#include "d3dx8core.h"
#include "d3dx8tex.h"
#include "d3dx8mesh.h"
#include "d3dx8shape.h"
#include "d3dx8effect.h"
のいずれもが#1の方が紹介してくださったDirectX2007の8月版には付属してないようでした・・。
どうやらd3dx8~系統はすべてないようです。
確認してみた中では2006年2月版からは既にd3dx8.hがありませんでした。
今MS公式ページからは既にDirectX8SDKやDirectX8の機能が全て使えるDirectX9SDK
はもうダウンロードできなくなっているようです。
これは私の勘なのですがおそらく2004年の10月版あたりまではこれら8.0の機能が
使えたのではないのかなと推測しています。
(2004年10月版は最後のVC6.0で使えたバージョンなので)
そこでふと思い立って自分の昔作成した保存用HDD内を見てみるとなんと
今はMSが削除しているDirectX9SDK最初期の2002年版が見つかりました!
その中のIncludeフォルダを見てみるとこれら削除されているファイルがありました。
無事にコンパイルが・・と思ったらやはりエラーが(泣)
どうやらDirectXだけでなくPlatformSDKとかWINAPI関連の仕様の変更とDirectXが競合して
カオスなエラーがでまくっています。
まずPlatformSDK関連でPVOID関連で;がどうのこうのとかのエラーが大量に吐かれました。
そこでひょっとすると同じ定義の多重宣言によるライブラリ混乱が問題かなと思い、
Include、Libパス共に優先順位をDirectXSDKのパスよりPlatformSDKパスを上にもっていく
とこの類のエラーは解決しました。
ただし、
fatal error LNK1104 : コンパイラは、ファイル'libci.lib'を開くことができません
というエラーが依然残りました。
どうやら検索で出てきた
http://vision.kuee.kyoto-u.ac.jp/~nob/diary/mdia …
を参照すると
VS2002まで提供されていたDirectXSDKには古いiostream形式を採用している
箇所があるようで
これもまた運良く見つけることができた
http://yoshirf.atnifty.com/yj/index.html
によると
メニュー -> プロジェクト -> プロパティ を選択して 構成プロパティ -> リンカ -> コマンドライン -> 追加のオプションの所に /nodefaultlib:libci を追加すると、ビルド&実行できるようになるとのことで
試してみました。
すると・・・!なんと実行できました!!!
感動です。解答してくれたお二方、本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ゲーム) Steam版(PC)アーマードコア6の購入を検討しているのですが動作環境が合っているか分かりません。 4 2023/08/24 18:43
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- その他(OS) windows10 Microsoftアカウントを完全に削除・入れ替えるには? 1 2023/08/18 08:26
- Windows 10 VirtualBoxで起動できないゲームがあります 2 2022/12/17 06:13
- ノートパソコン 中古パソコンの買い方 7 2023/03/07 16:53
- Windows 10 DirectX というのについて教えてください 11 2023/07/03 11:32
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- ゴルフ ショットナビクレスト ゴルフ場データ更新について 2 2023/01/01 10:34
- Excel(エクセル) Excelを開くとエラーが出る 2 2022/10/03 16:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンパイルエラー:ユーザ定義...
-
VBAを何回も作り直して、容量が...
-
c言語 文字列の比較
-
1 つ以上の複数回定義されてい...
-
マクロ コンパイルがグレーバック
-
” OS ビルド ” の意味が分か...
-
C言語のコンパイルができません
-
こちらのプログラム #include <...
-
Fortranについて教えてください
-
C++コンパイル時に『 C1083: in...
-
Borland C++でdirectXのサンプル
-
複数ファイルに分割した時の構...
-
外部シンボル "_main"は未解決です
-
VB6で開発中…標準モジュール間...
-
<math.h>があるのにsqrtが・...
-
Makefile作成時の拡張子.oとは?
-
「fatal error C1189」を回避す...
-
CUDAのプログラムを実行できません
-
cmakeは何をするのですか? cma...
-
cygwinのgccが、エラーになって...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
<math.h>があるのにsqrtが・...
-
Makefile作成時の拡張子.oとは?
-
C言語でヘッダファイルにグロー...
-
エクセルVBAではRound...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
ILSpyで、デコンパイルできない。
-
” OS ビルド ” の意味が分か...
-
外部シンボル "_main"は未解決です
-
セミコロンについて
-
C++コンパイル時に『 C1083: in...
-
マクロ コンパイルがグレーバック
-
[c++] <pthread.h>がinclude で...
-
コンパイルエラー:ユーザ定義...
-
ビルドとリビルドの違いを教え...
-
クリティカルエラー Expressio...
-
sys/types.hの必要性について
-
【VC++6.0(MFC)】警告「LINK : ...
-
PRO*C コンパイルエラー
おすすめ情報