質問: SHGetSpecialFolderLocation( hWnd, nFolder, &pidl ) ) ^ main.cpp:121:41: error: 'SHGetPathFromIDList' was not declared in this scope if ( SHGetPathFromIDList( pidl, Path ) ) とまたエラー。 今まで使っていたコンパイラで(後者の方を)コンパイルしたところ、普通にコンパイルできました。 コンパイル時に渡すリンケージ(?) も同じようにしています。 ( 両方とも -lshell32 を付けてコンパイルしている。 ) この差は何なんでしょうか。 どういう風に回避すればいいのでしょうか。 このコンパイラではWindowsAPIはサポートされていないのかと思い、 ( windows.h はインクルードされています。 ) MessageBox( NULL, "test", "test", MB_OK ); を追加すると普通にコンパイルでき、使えます。 新しい方のコンパイラで SHGetPathFromIDList等を使うにはどうすればいいでしょうか。 [環境等] 言語 : C/C++ コンパイラ : MinGW 新しい方のコンパイラ: g++ (i686-posix-dwarf-rev1, Built by MinGW-W64 project) 6.2.0 古い方のコンパイラ : g++ (GCC) 3.3.3 宜しくお願い致します。
回答: こんにちは。 未定義エラーが出る時は、#includeが不足している場合が多いです。 ディレクトリ選択ダイアログの表示などを見ると`SHGetPathFromIDList()`を使う場合には、`#include`も必要なようです。