我有以下代码:
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是其他东西,具体取决于编译器/环境设置。是否有人知道一种简单的方法来使命令行参数起作用,这样我就不需要自己转换任何东西了,我可能通过更改tmain函数?
谢谢!
C
更新:在命令行上调用的示例:
是的。所以我在命令行上调用它的方式是:
progname.exe arg1 arg2,
其中arg1是我试图加载的物理引擎,而arg2是dae(物理信息的物理文件),所以我去了,具体来说:
progname.exe Bullet 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");
}
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& name,即字符串,只是“B”,而不是我期望的那样,即“Bullet”,我在命令行中传递的命令行参数。
答案 0 :(得分:0)
---编辑以下---
事实证明,我只是没有问正确的问题。我终于问了正确的问题,得到了正确的答案!见下面的链接。