- 締切済み
エラーでリンクができません(VC++)。「外部シンボル
error LNK2001: 外部シンボル "_IID_IAutoComplete2" は未解決です error LNK2001: 外部シンボル "_CLSID_AutoComplete" は未解決です error LNK2001: 外部シンボル "_IID_IAutoComplete" は未解決です これら3つのエラーが出るためビルドに失敗します(コンパイルは成功しますがリンクに失敗します)。 MSDNによると #include "shldisp.h" #include "shlguid.h" が必要とあるのでincludeしています。VC++上でこのヘッダーファイル上で右クリックをして現れたメニューからファイルを開くと、この中にはきちんと「IID_IAutoComplete2」などが定義されています。またこれらのヘッダーファイルはPlatformSDK 20002年10月版 を使用しています。 MSDNにはshell32.dllのVer5.0以上が必要と書かれていますが、使用しているOSにインストールされているshell32.dllはver6.00.2600.0000です。 #include "shlguid.h"に含まれている以下の行をコピーしてソースに貼り付けると2つ目のエラーはなくなります。 DEFINE_GUID(CLSID_AutoComplete, 0x00BB2763L, 0x6A77, 0x11D0, 0xA5, 0x35, 0x00, 0xC0, 0x4F, 0xD7, 0xD0, 0x62); 環境は Windows XP InternetExplorer 6.0 Visual C++ 6.0 SP5 PlatformSDK(2002/10)(CoreSDK) PlatformSDK(2002/10)(InternetSDK) です。 何が原因でリンクできないのでしょう??まったくお手上げな状態です。分かる方がいましたらよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
PlatformSDK 2002年10月版 ではないのですが、 #include <windows.h> #include <shldisp.h> #include <shlguid.h> として、 CLSID_AutoComplete IID_IAutoComplete IID_IAutoComplete2 の3つを参照させてみましたが、問題なくリンクできました。 PlatformSDK の shell32.lib がおかしいか、shell32.lib がリンクされていない事くらいしか思いつきません。
お礼
リンクファイルのフォルダ設定でPlatformSDKから優先的にリンクするようにすることで解決しました。原因はPlatformSDKではなくデフォルトでVC++に入っていたshell32.libがリンクされていたためでした。どうもりがとうございました。