使用变量模拟C ++命令行参数

时间:2015-09-16 16:27:19

标签: c++ dll command-line

我正在尝试将C ++源代码转换为dll。为此,我将wmain更改为MyMethod,并将此来源的配置类型更改为动态库(.dll)。

现在MyMethod就像:

int MyMethod(int argc, wchar_t* argv[])
{    }

在此之后我将args传递给这个文件,如:

   MyFile.exe -a arg1 -b "arg2"

现在我想以相同的方式手动执行dll,以便有人描述here我将代码更改为:

  int MyMethod(int argc, wchar_t* argv[])
{
    int argc1 = 2;
    wchar_t *argv1[2] = { L"-a arg1",L"-b arg2" };
    argc = argc1;
    argv = argv1;
}

但是上面的代码与Command-Line没有相同的效果。

是什么让这段代码错了?!(我的意思是命令行分配变量有什么不同吗?)

更新1: 我的方法是:

    int wmain(int argc, wchar_t* argv[])
    {
        int argc1 = 3;
        wchar_t *argv1[3] = { L"" , L"-a arg1",L"-b arg2" };

        argc = argc1;
        argv = argv1;

        if (!ArgTranslate(argc, argv))
        {
            MessageBoxA(0, "Error", "Not valid args", 0);
            return -1;
        }
    MessageBoxA(0, "Valid", "It is valid", 0);
    return 0;
}

bool ArgTranslate(int argc, wchar_t* argv[])
{

    wchar_t* Parm1= NULL;   
    wchar_t* Parm2= NULL;   

    for (int i = 1; (i < argc) && ((i + 1) < argc); i += 2)
    {
        if (wcscmp(argv[i], L"-a") == 0)
            Parm1 = argv[i + 1];
        else if (wcscmp(argv[i], L"-b") == 0)
            Parm2 = argv[i + 1]; 
    }
    if (Parm1 == NULL || Parm2 == NULL)
        return false;
    else
    return true;
}

0 个答案:

没有答案