前提・実現したいこと
VisualStudio2019でWindowsのファイルダイアログシステムを使ってファイルを開けたい
ファイルダイアログのを実装したいのですが、その実装中にGetOpenFileName(OPENFILENAME)の呼び出し部分でリンカーエラーが出てしまいサンプルコードを見たり調べたのですがわかりません。
よければ教えてください
発生している問題・エラーメッセージ
error LNK2019: 未解決の外部シンボル imp_GetOpenFileNameW が関数 "public: int cdecl FileDialog::OpenFile(struct HWND *)" (?OpenFile@FileDialog@@QEAAHPEAUHWND@@@Z) で参照されました
1>D:\Workspace\ModelViewe\x64\Debug\3dgp.exe : fatal error LNK1120: 1 件の未解決の外部参照
該当のソースコード
C++
1 2#include<windows.h> 3 4class FileDialog 5{ 6public: 7 FileDialog(){}; 8 ~FileDialog(){}; 9 10 11public: 12 13 //--------------------<ファイルを開く>--------------------// 14 bool OpenFile(HWND hwnd); 15 16private: 17 /* char path[MAX_PATH]{}; 18 char filename[MAX_PATH]{}; 19 char mes[1024]{};*/ 20}; 21 22 23 24bool FileDialog::OpenFile(HWND hwnd) 25{ 26 27 OPENFILENAME ofn{}; 28 TCHAR szPath[MAX_PATH]{}; 29 TCHAR szFile[MAX_PATH]{}; 30 31 if (szPath[0] == TEXT('\0')) { 32 GetCurrentDirectory(MAX_PATH, szPath); 33 } 34 35 if (ofn.lStructSize == 0) { 36 ofn.lStructSize = sizeof(OPENFILENAME); 37 ofn.hwndOwner = hwnd; 38 ofn.lpstrInitialDir = szPath; // 初期フォルダ位置 39 ofn.lpstrFile = szFile; // 選択ファイル格納 40 ofn.nMaxFile = MAX_PATH; 41 ofn.lpstrFilter = TEXT("MP3/M3Uファイル(*.mp3,*.m3u)\0*.mp3;*.m3u\0") 42 TEXT("MP3ファイル(*.mp3)\0*.mp3\0") 43 TEXT("M3Uファイル(*.m3u)\0*.m3u\0") 44 TEXT("すべてのファイル(*.*)\0*.*\0"); 45 ofn.lpstrTitle = TEXT("音楽ファイルを選択します。"); 46 ofn.Flags = OFN_FILEMUSTEXIST; 47 } 48 49 50 return GetOpenFileName(&ofn); 51} 52
試したこと
サンプルコード(下記URL)を参照しました
https://blog.goo.ne.jp/masaki_goo_2006/e/930c4be856eae4556e1367f0125ec63b
補足情報(FW/ツールのバージョンなど)
ライブラリはDirectX11を使用しています
FileDialogクラスはシングルトンパターンのほかのクラスのメンバでそのクラスのコンストラクタで生成しています
WinAPIWrapper::WinAPIWrapper()
{
filedialog = new FileDialog();
}
WinAPIWrapper::~WinAPIWrapper()
{
delete filedialog;
}
回答2件
あなたの回答
tips
プレビュー