2

Visual Studio 2008 を使用して C からVista 関数を呼び出そうとしていますSHGetKnownFolderPath()。コードは C++ として正常に動作しますが、次の出力で C コードとしてコンパイルすることを拒否します。

xyz\indexwiki.cpp(316): エラー C2440: '関数': 'const GUID' から 'const KNOWNFOLDERID *const' に変換できません xyz\indexwiki.cpp(316): 警告 C4024: 'SHGetKnownFolderPath': 形式の異なる型および実パラメータ 1

コードはほとんど次のとおりです。

PWSTR path;

HRESULT hr = SHGetKnownFolderPath(
  FOLDERID_Profile,
  0,
  NULL,
  &path
);

可能であれば、C のままにし、プロジェクトを単一のソース ファイルとして保持したいと思います。これは、新しい Windows API の既知の問題ですか? Google経由ではあまり見つかりませんでした。何か不足していますか?それとも、キャストまたはプリプロセッサ定義を含む簡単な回避策がありますか?

4

3 に答える 3

5

以下はいかがでしょうか?

HRESULT hr = SHGetKnownFolderPath(&FOLDERID_Profile, 0, NULL, &path);

于 2011-04-02T06:59:38.170 に答える
1

Cでポインターを渡しても、インテリセンスはコンストラクターが見つからないと文句を言います。私はそれを取り除くことができなかったので、これはバグだと思います。私の解決策は、ファイルの名前を.cppに変更することでした。

于 2012-04-25T19:17:10.693 に答える
0

エラー メッセージからわかるように、const GUID を渡していますが、SHGetKnownFolderPath は REFKNOWNFOLDERID を必要としています。これを使用してみてください:

HRESULT hr = SHGetKnownFolderPath( (REFKNOWNFOLDERID)FOLDERID_Profile,  0,  NULL,  &path);
于 2011-04-02T06:58:58.577 に答える