none
'httprequest.h': No such file or directory RRS feed

  • 質問

  • WinHTTPのC++からの利用を勉強しています。以下のページにあるサンプルプログラムをコンパイルすると

    'httprequest.h': No such file or directory のエラーとなります。

     

    http://msdn.microsoft.com/en-us/library/aa383961(VS.85).aspx

     

    サンプルプログラム

     

    #include "stdafx.h"
    #include "objbase.h"

    #include "httprequest.h"

    // IID for IWinHttpRequest.
    const IID IID_IWinHttpRequest =
    {
      0x06f29373,
      0x5c5a,
      0x4b54,
      {0xb0, 0x25, 0x6e, 0xf1, 0xbf, 0x8a, 0xbf, 0x0e}
    };

    int main(int argc, char* argv[])
    {
        // Variable for return value
        HRESULT    hr;

        // Initialize COM
        hr = CoInitialize( NULL );

        IWinHttpRequest *  pIWinHttpRequest = NULL;

        BSTR            bstrResponse = NULL;
        VARIANT         varFalse;
        VARIANT         varEmpty;
       
    ----   以下省略 -------

     

    Windows SDK はインストールしてあります。

    Visual Studio 2008です。

     

    どうしたら、httprequest.h が入手できるのでしょうか?

    よろしくお願いいたします。

     

     

    2008年8月26日 6:27

回答

  • WindowsSDK の include に httprequest.idl というファイルはないでしょうか?

     

    midl.exe httprequest.idl

     

    を実行すると、httprequest.h は生成されると思います。

     

    2008年8月26日 8:14
  • 一点気になることがあります.どのWindows Operating Systemで,どのユーザ権限で実行したか,です.

     

    エラーコードの 0x80070005 は E_ACCESSDENIED ですから,そのフォルダ(C:\Program Files\Microsoft SDKs\Windows\v6.0\Include)に対して,そのユーザ権限でファイルを作成できなかった可能性が高いと思います.

     

    一度,httprequest.idl を適当なフォルダ(そのユーザ権限でファイルの作成や書き込みが可能なフォルダ)にコピーしてから,同じように実行してみると如何でしょうか?

     

    2008年8月28日 1:43

すべての返信

  • WindowsSDK の include に httprequest.idl というファイルはないでしょうか?

     

    midl.exe httprequest.idl

     

    を実行すると、httprequest.h は生成されると思います。

     

    2008年8月26日 8:14
  • httprequest.idlは、Windows XPのPCにはありましたが、VISTAのほうにはありまませんでした。

    おそらく、WindowsSDKがちゃんとインストールされてないためだと思います。

     

    ありがとうございました。

     

     

     

    2008年8月27日 1:37
  •  

    お世話になります。

     

    midlでコンパイルしたら、下記のようなエラーとなってしまいました。どうしたら解決できるでしょうか?

    できましたら、ご指導お願いいたします。

     

    C:\Program Files\Microsoft SDKs\Windows\v6.0\Include>midl httprequest.idl
    Microsoft (R) 32b/64b MIDL Compiler Version 7.00.0499
    Copyright (c) Microsoft Corporation 1991-2006. All rights reserved.
    Processing .\httprequest.idl
    httprequest.idl
    Processing .\oaidl.idl
    oaidl.idl
    Processing .\objidl.idl
    objidl.idl
    Processing .\unknwn.idl
    unknwn.idl
    Processing .\wtypes.idl
    wtypes.idl
    Processing .\basetsd.h
    basetsd.h
    Processing .\guiddef.h
    guiddef.h
    Processing .\oaidl.acf
    oaidl.acf
    midl\oleaut32.dll : error MIDL2020 : error generating type library : SaveAllChan
    ges Failed : .\httprequest.tlb (0x80070005)

    2008年8月28日 1:21
  • 一点気になることがあります.どのWindows Operating Systemで,どのユーザ権限で実行したか,です.

     

    エラーコードの 0x80070005 は E_ACCESSDENIED ですから,そのフォルダ(C:\Program Files\Microsoft SDKs\Windows\v6.0\Include)に対して,そのユーザ権限でファイルを作成できなかった可能性が高いと思います.

     

    一度,httprequest.idl を適当なフォルダ(そのユーザ権限でファイルの作成や書き込みが可能なフォルダ)にコピーしてから,同じように実行してみると如何でしょうか?

     

    2008年8月28日 1:43
  • SAKAMOTOさま

     

    なるほど、OSはWindows VISTAです。なので、Admin権限ですが、セキュリティではじかれたかもしれませんね。

     

    XPではうまくいっています。

     

    フォルダをかえてやってみます。

     

    ありがとうございました。

     

     

    2008年8月29日 0:33
  • ありがとうございました。別のフォルダにコピーしたらできました。

     

    ところで、エラーコードの意味は何を参照したらわかるのでしょうか?

     

     

     

    2008年8月29日 2:11
  • こんにちは。中川俊輔 です。

     

    Takashi SAKAMOTOさん、回答ありがとうございます。

     

    masa-wangさん、フォーラムのご利用ありがとうございます。

    有用な情報と思われたため、Takashi SAKAMOTOさんの回答へ回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    masa-wangさんはチェックを解除することもできますので、ご確認ください。

     

    また、下記のページにシステムエラーコードの一覧があります。

    System Error Codes

    http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspx

     

    エラーコードの見方については下記の文章が参考になると思います。

    [Win32SDK]DirectShow にて HRESULT から原因を解析する

    http://support.microsoft.com/kb/436468/ja

     

    それでは!

     

    2008年9月11日 8:45