SDXFrameWork 0.12 SDXFrameWork

- Main Page
- Related Pages
- Classes

All Classes Namespaces Functions Variables Enumerations Enumerator Pages
移植においての注意

SDXはWindows、Mac、GNU/Linux、iOS、Android等に対応するソフトウェアを、ソースコードの修正を殆どせずに作成出来ます。
しかしながら実際は様々な理由でそのまま動かない事があるので、以下の点等に注意する必要があります。
例えば特定のコンパイラの拡張文法や特定OSのAPIを使っている場合、当然移植性が下がります

文字エンコーディング
BOM付きのUTF-8でソースコードを保存する事を推奨します。
Shift-JIS等で保存するとVisualStudio以外でビルド不可能になる事があります。
VisualStudioにはデフォルトでUTF-8で保存する設定が面倒なので、
Shift-JISには存在しないがUTF-8に存在する文字(例:☀や©)をコメントしておくと安心です
外部リソースとしてテキストファイルを使う場合もShift-JISで無くUTF-8が推奨されます

リソースファイル名
一部環境でエラーが出るため、画像やテキストファイル名、フォルダ名等はアルファベット(a~z,A~Z)と数字(0~9)と半角アンダーバーのみにして下さい。
Androidを想定する場合、大文字のアルファベットも避けて下さい。

WindowsXP
VisualStudioで作成したソフトをWindowsXPで動かしたい場合、設定を変更する必要があります。
プロジェクト>プロパティ>構成プロパティ>全般>プラットフォームツールセットをXPに対応している物に変更して下さい。

識別子
Androidでは関数名やクラス名等にアルファベット(a~z,A~Z)と数字(0~9)と半角アンダーバー以外を使うとエラーが出る事があります。
仮引数や変数に使う分にはエラーは出ないようです。Android以外では問題なく基本ソース文字セット以外の識別子が使えます。
一応ソースを変換するツール(UTF_Convert.exe)も配っているので、必要なら使ってください
https://github.com/mrdagon/UTFConvert

フォント
OSによってシステムフォントのパスが変わるため、デフォルトフォントで描画出来ない事があります。

Drawing::SetDefaultFont("配布するフォント名.ttf",16);

ttfファイルを一緒に配布して、上のような処理をしておくと各プラットフォームでデフォルトフォントを共通に出来ます
複数のOSに対応したい場合、OS標準フォントは使うのを避けて下さい
Androidだとフォントの生成が凄く重くなるので、MakeBMPFont関数でBMPフォントを生成しておくと高速に扱えます。
BMPフォントを作成してpngに変換して使うと、ttfに比べて配布サイズが小さくなります。

ファイル入出力
テキストファイルの入出力処理を標準ライブラリの関数で行うと、保存先がOSによってバラバラになります。
Fileクラスを使ってください。
特にAndroidではFile::Openの第四引数で保存先が変わるので注意して下さい

デスクトップとタブレットにおける入出力の違い
タブレットOSでタッチ操作をするとMouseクラスとTouchクラスの両方で値を更新しますが、
デスクトップOSでマウス操作をしてもTouchクラスを更新していません。
仮想ジョイパッドを画面に表示したりも今のところしていません
この辺りは仕様が変わる可能性があります

ソースファイル
Android版ではソースファイル名をmkファイルに列挙する必要があります
実装と宣言を分けて開発している場合はAndroid.mkファイルを修正する必要がありますし、プリコンパイルヘッダー作成用のソース等も追加する必要があります
OS毎にプリコンパイルの設定が面倒な場合は以下のようにmain.cppでインクルードすると楽です

#ifndef __WINDOWS__
#include "PreCompile.cpp"
#include "main2.cpp"
#endif

またヘッダーファイル名がSDLで使われているヘッダーファイルと被るとエラーになる事があります。

#include "block.h"

でバグりました