使用命令行参数调试VS2010

时间:2013-04-01 01:58:36

标签: visual-studio-2010 bulletphysics bullet

我已在project properties -> debugging -> command arguments部分为我的应用设置了命令行参数。

如果我直接从命令行运行程序,我会这样做:

progname arg1 arg2

所以我将VS中的命令行参数设置为

arg1 arg2,

here.

所述

但是,该程序似乎与从命令行运行它的方式不同。参数是文本文件,并且在命令行中它可以正确加载这些文本文件,在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设置,看看他们说了什么。

1 个答案:

答案 0 :(得分:0)

正如在https://msdn.microsoft.com/en-us/library/17w5ykft.aspx中所说,你可以尝试为每个“\”字符添加一个反斜杠,以便在路径中转义它们。例如:

之前:“C:\ somewhere \ someplace \ physics_engine”

之后:“C:\\某处\\ someplace \\ physics_engine”