2012-08-26 49 views
1

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

如果我说

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

我用L"C:\\exmpl.exe",但它不工作。 。

+0

这不是你的实际代码。因此对那些试图帮助你的人没有帮助。 – tenfour

回答

0

你确定这不是CreateProcess?无论如何,请尝试使用

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

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

+0

对不起,这是一个错字。 。这是CreateProcess – Eric

+0

编译器说const char *与LPCWSTR – Eric

+0

@Eric不兼容。首先你说它是'LPTSTR',现在'LPCWSTR'。 –

0

尝试

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

的文本宏是用来改变您的字符串,如果您的应用程序被设置为使用Unicode为Unicode。

+0

如果后来你不想使用unicode会怎么样?你必须遍历代码才能取代这些事件。正确的方法是使用'_T'来代替(请参阅我的答案)。 –

+0

它不工作! – Eric

+1

埃里克,这是一个非常无益的事情说。 *什么,确切*,不起作用? – Puppy

0

对不起,新的答案:

关注的第二个参数,它必须是一个TCHAR *(字符*在UNICODE ANSI或为wchar_t *)。 不要使用为const char *,或者说,不要简单地通过“参数1参数2”的第二个参数,像这样做:

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

CreateProcess需要一个可变(非const)该字符串参数。你显然正在传递一个const字符串。

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

0

你也可以将你的VC项目设置为多字节字符集。 只需转到项目属性,并在常规选项卡中可以看到字符集。