使用createprocess()时的类型转换问题

时间:2012-08-26 12:54:46

标签: c++ casting

我正在使用命令行应用程序,它希望参数生成所需的输出。我正在尝试使用createprocess()中的CPP来调用应用并传递参数。我在类型转换方面遇到了困难。 。它说const char*LPTSTR不兼容。

如果我说

char a[]="param 1 param2";
createprocess("C:\\exmpl.exe",a,......)

我使用L"C:\\exmpl.exe"但它不起作用。 。

5 个答案:

答案 0 :(得分:1)

CreateProcess需要此参数的可变(非const)字符串。您显然是在传递const字符串。

下次请粘贴您正在使用的实际代码。

答案 1 :(得分:0)

你确定它不是CreateProcess吗?无论如何,尝试

_T("C:\\exmpl.exe")

此宏会相应地将字符串扩展为宽字符串。

答案 2 :(得分:0)

TCHAR a[] = TEXT("param 1 param2");
CreateProcess(TEXT("C:\\exmp1.exe", a, ...);

如果您的应用设置为使用UNICODE,TEXT宏用于将您的字符串更改为UNICODE。

答案 3 :(得分:0)

对不起,新答案:

观察第二个参数,它必须是TCHAR *(ANSI中的char *或UNICODE中的wchar_t *)。 不要使用CONST CHAR *,或者说,不要简单地将“param1 param2”传递给第二个参数,这样做:

TCHAR param[] = TEXT("param1 param2");
CreateProcess(TEXT("my exe"), param, ...);

答案 4 :(得分:0)

您还可以将VC项目设置为多字节字符集。 只需转到项目属性,在常规选项卡中就可以看到char set。