Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用createprocess()时的类型转换问题_C++_Casting - Fatal编程技术网

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

C++ 使用createprocess()时的类型转换问题,c++,casting,C++,Casting,我正在使用一个命令行应用程序,它期望参数生成所需的输出。我正在尝试使用CPP中的createprocess()调用应用程序并传递参数。我在类型转换方面有困难。它说const char*与LPTSTR不兼容 如果我说 char a[]="param 1 param2"; createprocess("C:\\exmpl.exe",a,......) 我使用了L“C:\\exmpl.exe”,但它不起作用 您确定它不是CreateProcess?不管怎样,试试看 _T("C:\\exmpl.exe

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

如果我说

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

我使用了
L“C:\\exmpl.exe”
,但它不起作用

您确定它不是
CreateProcess
?不管怎样,试试看

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

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

您确定它不是
CreateProcess
?不管怎样,试试看

_T("C:\\exmpl.exe")
此宏将相应地将您的字符串扩展为宽字符串。

试试看

TCHAR a[] = TEXT("param 1 param2");
CreateProcess(TEXT("C:\\exmp1.exe", a, ...);
如果应用程序设置为使用UNICODE,则文本宏用于将字符串更改为UNICODE。

请尝试

TCHAR a[] = TEXT("param 1 param2");
CreateProcess(TEXT("C:\\exmp1.exe", a, ...);
如果应用程序设置为使用UNICODE,则文本宏用于将字符串更改为UNICODE。

对不起,新答案:

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

TCHAR param[] = TEXT("param1 param2");
CreateProcess(TEXT("my exe"), param, ...);
对不起,新答案:

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

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

CreateProcess
需要此参数的可变(非
const
)字符串。显然,您正在传入一个
常量
字符串


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

CreateProcess
需要此参数的可变(非-
const
)字符串。显然,您正在传入一个
常量
字符串


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

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

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

对不起,这是一个输入错误。它是CreateProcessCompiler说const char*与不兼容LPCWSTR@Eric是哪一个。首先说它是
LPTSTR
,现在说它是
LPCWSTR
。CreateProcess中的第一个参数是LPCTSTR,第二个参数是LPTSTR。我试过了,TEXT(),L“”。什么都不管用me@Eric你只找过类型转换吗?对不起,那是打字错误。它是CreateProcessCompiler说const char*与不兼容LPCWSTR@Eric是哪一个。首先说它是
LPTSTR
,现在说它是
LPCWSTR
。CreateProcess中的第一个参数是LPCTSTR,第二个参数是LPTSTR。我试过了,TEXT(),L“”。什么都不管用me@Eric您是否只查找类型转换?如果以后不想使用unicode怎么办?您必须检查所有代码以替换这些事件。正确的方法是使用
\u T
(见我的答案)。埃里克,这是一个非常没有帮助的说法。到底是什么不起作用?如果以后你不想使用unicode怎么办?您必须检查所有代码以替换这些事件。正确的方法是使用
\u T
(见我的答案)。埃里克,这是一个非常没有帮助的说法。到底是什么不起作用?这不是你的实际代码。因此,它对试图帮助您的人没有帮助。这不是您的实际代码。因此,这对试图帮助你的人没有帮助。