none
VS2010(C++MFC, DirectX9使用)プロジェクトをVS2019で使えるようにしたい RRS feed

  • 質問

  • DirectX関係でビルドが通らないので教えてください。

    VS2010プロジェクトでは DirectX SDK (February 2010) を使っていたので変更しないでVS2019でビルドすると
      dxgitype.h(12,1): warning C4005: 'DXGI_STATUS_OCCLUDED': マクロが再定義されました。
     winerror.h(55840): message : 'DXGI_STATUS_OCCLUDED' の以前の定義を確認してください
    という警告が大量に出た後
     wincodec.h(8173,63): error C2061: 構文エラー: 識別子 'DXGI_JPEG_AC_HUFFMAN_TABLE'
     wincodec.h(8178,63): error C2061: 構文エラー: 識別子 'DXGI_JPEG_DC_HUFFMAN_TABLE'
     wincodec.h(8183,65): error C2061: 構文エラー: 識別子 'DXGI_JPEG_QUANTIZATION_TABLE'
    のエラーがでます。

    このプロジェクトのインクルードディレクトリから DirectXのincludeを外すと上記のメッセージがでないのですが、
    ソース中に使っていた
     #include <d3dx9tex.h>
    が見つからないとエラーが出ます。

    DirectXTex と置き換えれば 直るようなサイトがありましたが、
    DirectXTex に置き換えるといろんな箇所で直さないと動かない可能性が高いので
    できれば DirectX SDK (February 2010) をそのまま使って エラーがでないようにしたいです。 (警告は無視します)

    上記の
    C2061がエラーが出ないようにする方法がありましたらご教授お願いします。
    2020年4月24日 2:49

回答

  • インクルードディレクトリの指定順序を変更するだけで提示された最小のコードはビルドできました。具体的にはプロジェクトファイルを

    <IncludePath>C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\Include;$(IncludePath)</IncludePath>

    <IncludePath>$(IncludePath);C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\Include</IncludePath>

    という具合です。d3dx9texの機能が使えるようになっているのかはわかりません。


    2020年4月24日 13:25

すべての返信

  • 挙げられていたエラーとヘッダーファイルの該当行を確認しました。この感じだとWindows 8 SDK以降とDirectX SDK (February 2010)とを組み合わせるのはほぼほぼ無理だろうという印象です。Windows 7 SDKと組み合わせる必要がありそうで、そのためにはVisual Studio 2017 + Windows XPサポートが最終で、それ以降の環境は使えません。

    もし、問題が発生する最小のコードを提示していただけたらもう少し調査できるかもです。

    2020年4月24日 3:53
  • ご回答ありがとうございます。

    最小のコードですが、
    VisualStudio2019の新しいプロジェクトでMFCアプリを選びダイアログベースで完了させます。
    インクルードディレクトリにDirectX SDK (February 2010)\includeを指定して、
    出来た~Dlg.cpp の上部に
    #include <d3dx9tex.h>
    の1行を追加する だけで警告が60個、エラーが6個でます。

    コードの追加は
    #include <d3dx9tex.h>
    これだけです。

    2020年4月24日 11:08
  • インクルードディレクトリの指定順序を変更するだけで提示された最小のコードはビルドできました。具体的にはプロジェクトファイルを

    <IncludePath>C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\Include;$(IncludePath)</IncludePath>

    <IncludePath>$(IncludePath);C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\Include</IncludePath>

    という具合です。d3dx9texの機能が使えるようになっているのかはわかりません。


    2020年4月24日 13:25
  • 佐祐理様

    エラーは解消しました。
    この度は大変ありがとうございました。

    2020年4月25日 10:36