我正在尝试将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;
}