shell32.dllは2種類の関数をエクスポートします。— ANSIとUNICODEです。 (簡潔にするために、CHAR */WCHAR *引数を取る関数についてのみ話しています)。SHGetPathFromIDList関数を3回エクスポートする理由
たとえば、ShellMessageBoxA
はANSIバージョンです。ShellMessageBoxW
はUnicodeバージョンです。
#ifdef UNICODE
#define ShellMessageBox ShellMessageBoxW
#else
#define ShellMessageBox ShellMessageBoxA
#endif // !UNICODE
だからShellMessageBox
のShell32.dllからエクスポートされた関数として存在しません:ShellMessageBox
は、ヘッダファイルに定義されたマクロです。 - SHGetPathFromIDList
SHGetPathFromIDListA
SHGetPathFromIDListW
の目的は何である
- ORDINAL 312:
しかし、今、私は
SHGetPathFromIDList
を3回エクスポートされていることを発見しましたこの?
ヘッダーファイルを見て、どのように 'SHGetPathFromIDList'を宣言しているのか見ることができます。私の推測では、ヘッダーの宣言は 'ShellMessageBox'とまったく同じです。 'SHGetPathFromIDList'は単なるレガシーなホールドオーバーです。エクスポートされましたが、使用は意図されていません。 –