§3.コンパイル方法 VC++6/.NET/BCB5




・Visual C++6.0(以下VC++6と略記)
・Visual C++7.0(以下VC++.NETと略記)

yaneSDK2ndのマニュアルに従って、プリコンパイル済みヘッダの設定を行なうことを忘れないでください。VC++7用のプロジェクトファイルはサンプルに付属してあるので、そちらを利用しても構いません。

私は、最近はVC++.NETで開発しているため、VC++6でコンパイルの通らないコードを書いてしまうことがたまにありますが、そのときには掲示板で教えていただけると幸いです(^^;

コンパイルするための設定として参考になるページ:
・VC++.NET
http://someiyoshino.cool.ne.jp/insideyanesdk/
・VC++6
http://www.aurora.dti.ne.jp/~soybeens/factory/index.html

・Borland C++Builder 5(以下BCB5と略記)

yaneuraoGameSDK3rd 1.08からは、BCB5にも対応しました。これまた、まれにしかコンパイルチェックを行なわないもんで、コンパイルが通らないときは掲示板のほうにでも報告お願いします。

1.BCBを起動。プロジェクト⇒「プロジェクトに追加」で、サンプルファイル(sample1.lzhのsourceフォルダにある)を追加。
2.プロジェクト⇒「プロジェクトから削除」で、いらないファイルを除外。例)unit1.cpp,project1(プロジェクト名).resを除外。

3.コンパイル!
> [C++ エラー] dmusicc.h(20): E2209 インクルードファイル 'dls1.h' をオープンできない

dls1.hは、DirectMusicのファイルなのですが、BCB5には、このファイルが抜けています。DirectX7/8に含まれています。まあ、このファイルだけ配布している人がいるので、

http://www.uri.sakura.ne.jp/~cosmic/yuno/lab/dx/
このファイルだけいただいてきてBCB5のincludeフォルダに入れます。


あとは..

list-1 smart_vector_ptr.h
    template <class S>
    iterator    insert(const iterator& it, S* ptr){
        //  所有権を持ったsmart_ptrを生成し、
        //  smart_ptr間のコピーで、所有権が移動する
        smart_ptr<T> t(ptr);
        return base_type::insert(it, t);
    }


このiteratorを返している部分、base_type::iteratorとしないといけないようです。クラス内で定義されているクラスを指定するときに省略が不可なんでしょうかね..。yaneSDKのソースを修正(改悪?)しておきました。

list-2 smart_list_ptr.h
template<class T> class list_chain : public list<T*> {


こうなっているクラスがあって、これのiteratorは、このクラス内では定義されていないんですが(親元のクラスのをそのまま使うので)、

list-3
        typedef list_chain<T> base_type;


とiteratorをbase_type::iteratorとしても、コンパイル通らず。

list-4
        typedef list<T*> super_type;


として、super_type::iteratorとすればコンパイル通りました。(うーん..)

あとdelegate。これ、テンプレートクラス内の特化が実装されていないとエラーに。
くぅぅ..しっかりしてくれよ、BCB。そんなわけで、BCBではdelegateは外しました。usingするのもstdafx.hでやって、もし必要ならboostのほうと使いわけできるように..しましょか..。(気が向いたら)

あと気づいた点。

list-5
class X {
enum Y {c};
};


これ、VC++6/NETではX::Y::cと修飾できるんですが、BCBだとX::cと書かないとダメのようです。

あとインライン関数でインラインアセンブラを使えないっと。>BCB

そのあと、リンクでimm32.libとかdinput.libとかがないとエラーを出してきます。
探したところ、CBuilder5\Lib\PSDKにちゃんとあるようなので、これをライブラリパスとして指定します。プロジェクト⇒オプション⇒ディレクトリ⇒ライブラリパスで、このLib\PSDKフォルダを指定します。(ツール⇒環境オプションのほうで変更しても現在のプロジェクトには反映されないようです)

枠-1
$(BCB)\Lib\PSDK


これで、ひとまずok。

あとdxguid.libがリンクエラーになりますが、DirectX7のSDK(8は不可)に含まれています。なぜ8用がないのかは、わかりませんが..MicroSoftの嫌がらせでしょうか?(^^;

DirectX7のBCB用ライブラリ:
http://www.microsoft.com/downloads/release.asp?ReleaseID=17051
ところが、これ、リンカエラーになります。

枠-2
Error: Error processing module 


詳しい情報は、以下のページにあります。

・BCCでDirectXを使うページ
http://www.geocities.co.jp/Milano/8000/bcc/
・BCBでDirectX8を使う(BBXのFAQ)
http://bbx.hp.infoseek.co.jp/faq.shtml
implib.exeを使って、Windowsのシステムフォルダに存在するdinput.dllとddraw.dllとdsound.dllから、それぞれのlibファイルを作成するのがお手軽そうですね。

(==あとプリコンパイル済みヘッダの設定が必要==)
 〜かきかけ〜


それからフリーのコンパイラであるBCC5.5(Borland C++5.5)でも、yaneuraoGameSDK3rdをコンパイルできると思うんですが、そこまで試している時間がないので、テストできていません。興味のある人は、トライしてみて掲示板にでもレポートお願いしますm(_ _)m

BCBでのコンパイルについては、以下のページが参考になるでしょう:

・BCBでDirectXを使う:
http://www.kcat.zaq.ne.jp/takao/documents/bcb/09_directx.html