使用命令行参数进行VS2010调试

4
我已经在“项目属性->调试->命令参数”部分为我的应用程序设置了命令行参数。如果我直接从命令行运行程序,则输入“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. 

如果我在命令行上执行这个操作,它是可行的,但如果我将这些参数传递给调试器,就会出现一个问题,指出“无法加载物理引擎”。这可能是物理引擎加载器内部的结果,该加载器来自另一个来源,但我猜想,无论我是在命令行还是在VS调试器设置中传递这些参数,它应该以相同的方式工作。我将查看UAC设置并了解它们的内容。

绝对路径,例如E:/path/file.txt,也许我可以尝试使用Windows反斜杠? - ChrisC
反斜杠也无法正常工作。 - ChrisC
可能与UAC有关吗?运行Visual Studio(并启动您的进程)的实例没有访问要读取的文件,但单独运行它可以吗?在运行时没有收到任何异常或错误吗? - Adam Plocher
已经在上面的“编辑:帖子更新/澄清”部分进行了编辑。如果还有人关注这个问题,我会像Adam建议的那样查看UAC设置。到目前为止,非常感谢大家的帮助! :) - ChrisC
2
为了调试这个问题,我会在变量中硬编码正确的路径,而不是从命令行参数中读取它。看看子弹是否从命令行开始,但从使用硬编码路径进行调试时不会开始。我预计问题是由VS设置的环境(工作文件夹、管理员权限、环境变量等)引起的,而不是传递的字符串。 - No answer
显示剩余5条评论
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接