none
atlstr.hをインクルードするとatlcore.hでエラーが発生する。 RRS feed

  • 質問

  • Windows XP の頃のアプリをWindows8.1で動作させなければならず困っています。

    CStringTクラスを使うため、『#include <atlstr.h>』を追加し、ビルドしたところ、

    エラー 5 error C2065: 'LOAD_LIBRARY_SEARCH_SYSTEM32' : 定義されていない識別子です。 c:\program files\microsoft visual studio 12.0\vc\atlmfc\include\atlcore.h 635 1 WP_SET
    エラー 4 error C2065: 'SetDefaultDllDirectories' : 定義されていない識別子です。 c:\program files\microsoft visual studio 12.0\vc\atlmfc\include\atlcore.h 633 1 WP_SET
    エラー 3 error C2039: 'SetDefaultDllDirectories' : '`global namespace'' のメンバーではありません。 c:\program files\microsoft visual studio 12.0\vc\atlmfc\include\atlcore.h 633 1 WP_SET

    と『atlcore.h』でエラーが発生し、修正方法がわからず困っています。
    『atlcore.h』は手を入れていませんし、includeもしていません。

    atlstr.hのインクルード方法についてご教授頂けませんでしょうか?。
    2016年3月3日 7:52

回答

  • コンパイル時に/showincludesオプションを指定しどのディレクトリにあるヘッダーファイルを読み込んでいるか確認してください。正しい環境ではWindows.hから読み込まれるC:\Program Files\Windows Kits\8.1\Include\um\libloaderapi.h内にLOAD_LIBRARY_SEARCH_SYSTEM32が定義されています。

    想像ですが別ディレクトリにある古いWindows.hを読み込んでいるためにatrstr.hと不整合が生じているのではないかと…。

    • 回答としてマーク lga_im 2016年3月3日 8:45
    2016年3月3日 8:19

すべての返信

  • コンパイル時に/showincludesオプションを指定しどのディレクトリにあるヘッダーファイルを読み込んでいるか確認してください。正しい環境ではWindows.hから読み込まれるC:\Program Files\Windows Kits\8.1\Include\um\libloaderapi.h内にLOAD_LIBRARY_SEARCH_SYSTEM32が定義されています。

    想像ですが別ディレクトリにある古いWindows.hを読み込んでいるためにatrstr.hと不整合が生じているのではないかと…。

    • 回答としてマーク lga_im 2016年3月3日 8:45
    2016年3月3日 8:19
  • コンパイル時に/showincludesオプションを指定しどのディレクトリにあるヘッダーファイルを読み込んでいるか確認してください。正しい環境ではWindows.hから読み込まれるC:\Program Files\Windows Kits\8.1\Include\um\libloaderapi.h内にLOAD_LIBRARY_SEARCH_SYSTEM32が定義されています。

    想像ですが別ディレクトリにある古いWindows.hを読み込んでいるためにatrstr.hと不整合が生じているのではないかと…。

    ご回答、ありがとうございます。
    /showincludes
    で確認したところ、『~Windows\v7.1A\include\windows.h』をインクルードしていました。

    今回、XPとの互換は考えなくて良いので、『プラットフォームツールセット』を
    『Visual Studio 2013 - Windows XP (v120_xp)』→『Visual Studio 2013』
    に変更したところ、
    『~Windows Kits\8.1\Include\um\windows.h』
    をインクルードするようになり、ビルドでエラーが起きなくなりました。
    ありがとうございました。
    2016年3月3日 8:45