2012-08-26 50 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項目設置爲多字節字符集。 只需轉到項目屬性,並在常規選項卡中可以看到字符集。