none
MFC90JPN.dll について RRS feed

  • 質問

  • VC2008 が生成したマニフェストファイルには MFC90JPN.dll に関する記述がないのですが、このアプリケーションでは MFC90JPN.dll は不要と言うことでしょうか?

    2008年10月10日 4:10

回答

  •  村尾DOS さんからの引用

    VC2008 が生成したマニフェストファイルには MFC90JPN.dll に関する記述がないのですが、このアプリケーションでは MFC90JPN.dll は不要と言うことでしょうか?

    書かれていないから大丈夫という判断はよくありません。

    (見えにくい or マニフェストに書いていない依存はあり得る)

     

    MFC90JPN.dllはMFCに関連したリソースの日本語版が含まれています。

    MFCから文字列を取得する機会があったり、何らかの形でMFCのリソースを利用していると、MFC90JPN.dllが存在しない環境では英語で表示されるかもしれません。(未確認)

     

    ちなみにMFC90u.dllにはマニフェストがリソースとして埋め込まれていて、Optional = trueではありますが、MFC90LOCへの参照が含まれています。

    また、マニフェストに頼らず、自力でDLLを読む仕組みがある可能性も考慮すべきです。

    2008年10月12日 14:05
    モデレータ

すべての返信

  •  村尾DOS さんからの引用

    VC2008 が生成したマニフェストファイルには MFC90JPN.dll に関する記述がないのですが、このアプリケーションでは MFC90JPN.dll は不要と言うことでしょうか?

    書かれていないから大丈夫という判断はよくありません。

    (見えにくい or マニフェストに書いていない依存はあり得る)

     

    MFC90JPN.dllはMFCに関連したリソースの日本語版が含まれています。

    MFCから文字列を取得する機会があったり、何らかの形でMFCのリソースを利用していると、MFC90JPN.dllが存在しない環境では英語で表示されるかもしれません。(未確認)

     

    ちなみにMFC90u.dllにはマニフェストがリソースとして埋め込まれていて、Optional = trueではありますが、MFC90LOCへの参照が含まれています。

    また、マニフェストに頼らず、自力でDLLを読む仕組みがある可能性も考慮すべきです。

    2008年10月12日 14:05
    モデレータ
  • いつもアドバイス有り難うございます。

    MFC90LOC.dll にリネームした物と Microsoft.VC90.MFCLOC.manifest をインストールファイルに加える様にします。

     

    2008年10月13日 4:18
  •  村尾DOS さんからの引用

    MFC90LOC.dll にリネームした物と Microsoft.VC90.MFCLOC.manifest をインストールファイルに加える様にします。

    それでは効果がありません。

    あくまで、"MFC90JPN.DLL"というファイル名を持つDLLが必要な(はずな)ので、MFC90LOC.DLLにリネームすると読み込みの対象になりません。

     

    簡単なイメージ:

    起動時のマニフェストの内容検証→アプリ(もしくは別のDLL)からの"MFC90JPN.DLL"の読み込み要求→マニフェストの内容を含めたサーチシーケンスでDLLファイルを検索・決定→DLLが読み込まれる。

     

    以下参考。

     

    MFC ライブラリの再配布

    http://msdn.microsoft.com/ja-jp/library/ms235264.aspx

    Visual C++ ファイルの再配布
    Assembly Searching Sequence
    Private Assemblies
     
    2008年10月13日 7:00
    モデレータ
  •  Azulean さんからの引用

    あくまで、"MFC90JPN.DLL"というファイル名を持つDLLが必要な(はずな)ので、MFC90LOC.DLLにリネームすると読み込みの対象になりません。

     

    かなり古いのですが、ここを参考にしました。

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

    このシーケンスだと MFC90.dll が同じ場所にある MFC90LOC.dll を読み込むではないでしょうか?

     

    ですからアプリケーションマニフェストのも記述がないのだと解釈したのですが・・・

     

    2008年10月13日 7:55
  •  村尾DOS さんからの引用

    かなり古いのですが、ここを参考にしました。

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

    このシーケンスだと MFC90.dll が同じ場所にある MFC90LOC.dll を読み込むではないでしょうか?

    現存するかどうかまでは見切れていません。

     

    Visual Studio 2005

    http://msdn.microsoft.com/ja-jp/library/ms235264(VS.80).aspx

    Visual Studio 2008

    http://msdn.microsoft.com/ja-jp/library/ms235264(VS.80).aspx

     

    少なくとも2008の方では記述がありません。

    変わったのか、単純に記載漏れか、または2005の方が誤りなのか。

    2008年10月13日 10:18
    モデレータ
  •  Azulean さんからの引用

    現存するかどうかまでは見切れていません。

    MFCのソースを見ました。

    どうやら、Visual Studio 2008でもMFC90LOC.DLLに対する読み込み機能は残っているようです。失礼しました。

     

    MFC90LOCのマニフェストが存在する環境だとそちらが優先される点はご留意ください。

     

    ※MFC90LOC.DLLとリネームして配置するだけなら、Microsoft.VC90.MFCLOC.manifest多分いらないと思います。

    2008年10月13日 10:31
    モデレータ
  • 有り難うございます。これで配布ファイルを作成できます。

    余談ですが、
    VC++2008 SP1 が生成したマニフェストファイルの DLL バージョンが DLL そのもののバージョンと違っていて、これに気付くのに相当時間が掛かってしまいました。

    2008年10月14日 2:19