環境構築中2
最後にリンカエラー。
というか、DirectX SDK のヘッダ内部でコンパイルワーニングってどうよ? どうなのさ!? みたいな。
ま、問題の無いワーニングなのでそれは無視して、問題のリンカエラーは次のとおり。
upnp.obj : error LNK2019: 未解決の外部シンボル "wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)" (?ConvertStringToBSTR@_com_util@@YGPA_WPBD@Z) が関数 "public: __thiscall _bstr_t::Data_t::Data_t(char const *)" (??0Data_t@_bstr_t@@QAE@PBD@Z) で参照されました。
upnp.obj : error LNK2019: 未解決の外部シンボル "char * __stdcall _com_util::ConvertBSTRToString(wchar_t *)" (?ConvertBSTRToString@_com_util@@YGPADPA_W@Z) が関数 "public: char const * __thiscall _bstr_t::Data_t::GetString(void)const " (?GetString@Data_t@_bstr_t@@QBEPBDXZ) で参照されました。
Debug/miniAVG64.exe : fatal error LNK1120: 外部参照 2 が未解決です。
と、見るからに ConvertStringToBSTR やら ConvertBSTRToString の実体リンクミス。
ただ、使ってないんだけどねこの関数達は!
で、渋々とこれらの関数のある comsuppw.lib をソースの中に
#pragma comment(lib,"comsuppw.lib")
てな埋め込みをしてコンパイルをしてみたところ……
comsuppw.lib(comutil.obj) : error LNK2005: "class _variant_t vtMissing" (?vtMissing@@3V_variant_t@@A) は既に comsupp.lib(comutil.obj) で定義されています。
ちょwww
どうやら、別のライブラリが異なる同一関数のライブラリとバッティングを起こしている様子。
で、リンカオプションで comutil.lib を無視に追加することでやっと解決。
さすがマイクロソフト!
で、ソース埋め込みを指定を辞めて
リンカオプションで comsuppw.lib を追加すると無視も指定せずにコンパイルが通りました。
さすがマイクr