- PR -

GetEnvironmentValue() で C3861 "引数依存の照合・・・" エラー

1
投稿者投稿内容
Patton
会議室デビュー日: 2007/04/04
投稿数: 6
投稿日時: 2007-10-08 18:08
いつもお世話になっています。

環境:WinXP SP2
開発ツール:.net2003 VC++

ためしに GetEnvironmentValue を実行するプログラムを以下のように作ってみました。

m_strValue.Empty(); //CString形
TCHAR chValue[0xffff];
if( 0 == GetEnvironmentValue( static_cast<LPCTSTR>(m_strEnvironmentName), chValue, 0x0000ffff ) )
{
m_strStatus = _T("環境変数の取得に失敗しました");
}
else
{
m_strValue = chValue;
m_strStatus = _T("環境変数を取得しました");
}

すると、GetEnvironmentValue() で C3861 "引数依存の照合を使用しても見つかりません" とエラーになってしまいます。
引数の型はあっているはずなのに、なぜこのようなエラーになるかわかりません。

どなたか、よろしくお願いします。
がちょん
会議室デビュー日: 2006/07/17
投稿数: 13
投稿日時: 2007-10-08 20:02
MSDNでC3861のエラーメッセージの意味を検索しました?
GetEnvironmentValue()の引数の型と数は間違っていませんか?
Patton
会議室デビュー日: 2007/04/04
投稿数: 6
投稿日時: 2007-10-13 23:57
返事がおそくなりましてすみません。

C3861 は引数の数や引数の型が合ってない場合にでるエラーです。
GetEnvironmentValue() については、

DWORD GetEnvironmentVariable(
LPCTSTR lpName,
LPTSTR lpBuffer,
DWORD nSize
);
(MSDN より引用)

なので大丈夫のはずです。
ちなみに、私のコードでは二番目の引数として TCHAR の配列の先頭ポインタを渡していますが、LPTSTR と同じと言えると思います。

何か至らない点があれば教えてください。
がちょん
会議室デビュー日: 2006/07/17
投稿数: 13
投稿日時: 2007-10-14 00:43
関数名が微妙に違いますがMSDNのほうが正しいと仮定したとして、

MSDNでは四つの引数になっていますが

>GetEnvironmentValue( static_cast<LPCTSTR>(m_strEnvironmentName), chValue, 0x0000ffff )

引数は三つしかありません。
引数の種類が異なる同じ名前の関数があるんですか?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-10-14 01:24
つーか、ここJavaの会議室ですよ。
別のところで続けた方が、問題も解決しやすいと思いますが。
1

スキルアップ/キャリアアップ(JOB@IT)