-3

我正在尝试获取 Program Files 路径,将其附加到另一条路径,然后运行它。

TCHAR programsdir[MAX_PATH];
SHGetFolderPath(NULL,CSIDL_PROGRAM_FILESX86,NULL,NULL,programsdir);
PathAppend(programsdir, TEXT("\\bin\\program.exe"));
LPCSTR pokerpath = TEXT(programsdir);
WinExec(pokerpath ,SW_SHOW);
return pokerpath;

尝试运行上述内容时收到此错误消息:

error C2065: 'Lprogramsdir' : undeclared identifier

4

2 回答 2

2

TEXT是一个宏,应该L在您使用 unicode 编译时使用,否则没有。

所以在你的情况下,TEXT(programsdir)变成Lprogramsdir. 这就是为什么你有这个错误。

当你使用 unicode 字符串时,你必须在它们的声明前加上一个Las inL"My string content"

通过编写TEXT("My string content"),您可以确保在使用 unicode 时它变为 L“我的字符串内容”,否则为“我的字符串内容”。此宏允许您使用不同的编码,而无需修改原始字符串。

它不用于复制或演员,如果那是你试图做的。

于 2012-07-11T15:53:33.937 回答
0

TCHAR是一个typedef对于char

LPCSTR是一个typedef对于const char *

无需调用宏(显然每个@olchauvin 都会TEXT将一个附加到您的变量名)。L

你应该使用strcpy(pokerpath, programsdir);

或者只是返回programsdirchar *无论如何它都会衰减。

我不知道您是否使用 UNICODE,因此您可能需要使用特殊的 UNICODE 函数之一来复制字符串。否则,只能退货。

于 2012-07-11T16:08:08.387 回答