私は次のコードを持っています:
int _tmain(int argc, char** argv) {
bool g_graphics = true;
palPhysics * pp = 0;
#ifndef PAL_STATIC
PF -> LoadPALfromDLL();
#endif
char a[] = "Bullet";
std::string aa;
aa = std::string(argv[1]);
//PF->SelectEngine("Bullet");
DebugBreak();
PF -> SelectEngine(argv[1]);
//PF->SelectEngine(aa);
//debug
// assert(false);
pp = PF -> CreatePhysics();
}
コマンドライン引数noを読み込もうとしています。この行に 1:
PF->SelectEngine(argv[1]);
ただし、引数の最初の文字しか取得できません。私も変えてみました
int _tmain(int argc, char** argv)
に
int _tmain(int argc, TCHAR** argv), but then I get
エラー:
error C2664: 'palFactory::SelectEngine' : cannot convert parameter 1 from 'TCHAR *' to 'const PAL_STRING &'
PAL_STRING は単なる std::string です。
これは単純なものかもしれませんが、TCHAR を std::string に変換する方法がわかりません。特に、TCHAR はコンパイラの環境設定によって異なるためです。自分で何かを変換する必要がないように、コマンドライン引数を機能させる簡単な方法を知っている人はいますか?
ありがとう!
ハ
更新: コマンド ラインでの呼び出しの例:
うん。コマンドラインでこれを呼び出す方法は次のとおりです。
progname.exe arg1 arg2,
ここで、arg1 はロードしようとしている物理エンジンであり、arg2 は dae (物理情報を含む物理ファイル) であるため、具体的には次のようになります。
progname.exe 箇条書き E:/a.dae
「PF->SelectEngine(argv[1]);」という行にステップインします。次のコードを提供します。
bool palFactory::SelectEngine(const PAL_STRING& name) {
#ifdef INTERNAL_DEBUG
printf("palFactory::SelectEngine: this = %p\n", this);
#endif
SetActiveGroup(name); // also calls RebuildRegistry
return isClassRegistered("palPhysics");
}
、この場合、デバッグ時に、const PAL_STRING& の名前、つまり文字列が、私が期待していたものではなく、単なる「B」であることがわかります。これは、渡したコマンドライン引数「弾丸」です。コマンドライン。