none
AtlLoadSystemLibraryUsingFullPathがない RRS feed

  • 質問

  • 以前も同様な質問があり参考に読ませていただきましたが、解決しません。

    最近、2010にバージョンアップしました。そこまでは、前バージョンのプログラムもあっさり実行できたのですが、

    いつのまにか勝手に

    Microsoft Visual C++ 2010 x86 Runtime - 10.0.40219

    Microsoft Visual C++ 2010 x64 Runtime - 10.0.40219

    インストールされた後は、

    1>  _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\atltransactionmanager.h(262): error C3861: 'AtlLoadSystemLibraryUsingFullPath': 識別子が見つかりませんでした
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\atltransactionmanager.h(312): error C3861: 'AtlLoadSystemLibraryUsingFullPath': 識別子が見つかりませんでした
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\atltransactionmanager.h(342): error C3861: 'AtlLoadSystemLibraryUsingFullPath': 識別子が見つかりませんでした

    のエラーが発生してしまいます。

    尚、新規作成のMFCプロジェクトでも同様のエラーで実行できません。

    というわけで、なにも実行できない状態なのです。教えてください。

    2012年4月21日 9:27

すべての返信

  • 本当にランタイムが原因なのでしょうか?

    Visual C++ 2010 SP1 のセキュリティ更新プログラム で更新されたもののはずです。
    atltransactionmanager.h は同時に更新される atlcore.h に定義されている AtlLoadSystemLibraryUsingFullPath 関数に依存します。
    おそらく、atlcore.h が古い状態になってしまっているか、それを参照できない(違うファイルを見に行く何らかの問題がある?)現象があるのでしょう。

    とりあえずは、前述の MS11-025(KB2565057) をアンインストールしてもう一度適用してみるところからでしょうか。
    それでも改善しないのであれば、atlcore.h と同じ名前のファイルが変なところにないかとかも疑ってみるべきかもしれません。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    2012年4月21日 13:00
    モデレータ
  • C++言語では一般に指定されているヘッダーをincludeすれば使えます。例えばSTLのstd::stringを使う場合、「Header: <string>」と書かれているので

    #include <string>

    とすることで使えるようになります。今回、ATLのCAtlTransactionManagerクラスが使いたかったのでしょうか。「ヘッダー:atltransactionmanager.h」とあります。しかしATLでは書かれているヘッダーファイルだけでは足りなくて

    #include <atlbase.h>
    #include <atltransactionmanager.h>

    の2行が必要です。このことを説明しているMSDNドキュメントは見つけることができませんでした。

    ちなみに2行目だけ書くと件のエラーやその他にもいろいろエラーが出ます。はっきり言ってバグですが、by designなんでしょう、きっと。

    2012年4月22日 2:12
  • みなさん。回答ありがとうございます。返信がおそくなりすみませんでした。

    結局、何度インストールし直しても同じ症状なので、Windowsの自動更新をやめました。

    根本的な解決ではありませんが、とりあえず更新しなければエラーになりませんので、今はこのままにしておきます。

    個人的には、ATL関係を使っては書いているつもりはないのですが、mfcを使っている限りさけられないのでしょうか。

    自分の仕事に使うために8年前からのプログラムなのでもうぐちゃぐちゃで深く追求できませんでした。

    2005 , 2008 とバージョンアップしてきてもそのままビルドできるのですから、VC++てある意味すばらしい。

    2012年4月29日 17:08