-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

TEXTLは、 Unicode でコンパイルする場合に必要なマクロであり、それ以外の場合は何もありません。

したがって、あなたの場合は にTEXT(programsdir)なりLprogramsdirます。そのため、このエラーが発生します。

LUnicode 文字列を使用している場合は、宣言の前にas inを付ける必要があります。L"My string content"

を書くことTEXT("My string content")で、Unicode を使用する場合は L"My string content" になり、それ以外の場合は "My string content" になることが保証されます。このマクロを使用すると、生の文字列を変更することなく、さまざまなエンコーディングを使用できます。

それがあなたがしようとしているものであれば、コピーやキャストには使用されません。

于 2012-07-11T15:53:33.937 に答える
0

TCHARです。typedef_char

LPCSTRです。typedef_const char *

TEXTマクロを呼び出す必要はありません(L明らかに @olchauvin ごとに変数名に an が追加されます)。

あなたが使用している必要がありますstrcpy(pokerpath, programsdir);

または単に戻るprogramsdirchar *とにかく崩壊します。

UNICODE を使用しているかどうかはわかりません。文字列をコピーするには、特別な UNICODE 関数のいずれかを使用する必要があるかもしれません。それ以外の場合は、返品してください。

于 2012-07-11T16:08:08.387 に答える