我已经在该project properties -> debugging -> command arguments
部分中为我的应用程序设置了命令行参数。
如果我直接从命令行运行程序,我会这样做:
progname arg1 arg2
所以我将 VS 中的命令行参数设置为
arg1 arg2,
如此处所述。
但是,该程序的运行方式似乎与从命令行运行它的方式不同。参数是文本文件,并且在命令行中它可以正确加载这些文本文件,在 VS2010 中它不会以某种方式加载。任何想法为什么?
编辑:更新/澄清帖子:
我没有任何例外。
我的解释可能过于简单化了这个问题。我实际上并没有加载文本文件,而是加载了一个物理引擎,它应该在运行时确定,所以我需要命令行参数。
在高层次上用于加载物理引擎的代码是:
if ( argc > 2 )
{
#ifndef PAL_STATIC
PF->LoadPALfromDLL();
#endif
//DebugBreak(); // for debugging ;)
PF->SelectEngine(argv[1]);
if (!pp) {
#ifdef _WIN32
MessageBox(NULL,L"Could not start physics!",L"Error",MB_OK);
/* ^ This is the error I am getting, i.e. pp is NULL,
so "PF->SelectEngine(argv[1]);" is not loading engine correctly */
#else
printf("Could not start physics engine %s!\n",argv[1]);
#endif
return -1;
}
我正在使用 Bullet,它的运行方式如下:
progname.exe arg1 arg2,
arg1
是物理引擎名称,arg2
是要加载的物理文件,但它挂在arg1
.
我在命令行上调用它的具体方式是:
progname.exe Bullet filename.
如果我在命令行上执行此操作,它可以工作,但是如果我将这些参数传递给调试器,我会遇到问题could not load physics engine
。
这可能是物理引擎加载器内部的结果,它来自另一个来源,但我的猜测是,无论我在命令行中还是在 VS 的调试器设置中传递这些参数,这应该以相同的方式工作。
我将查看 UAC 设置,看看他们说什么。