質問

以来、VS、2005年に見ることはできませんので簡単に構築dll対MSランタイムを展開して(http://www.ddj.com/windows/184406482).私は混乱するマニフェスト,SxS、co:MSDN書類は本当に悪いので、円形の参照;特っており、Unixのインスピレーショ見方uninformative.私のコアの問題は、あなたのリンク先であるdll対msvc9はmsvc8:ここには、ランタイムは再頒布可能、どのようにリンクを展開などdll?特に、どのようにマニフェストの生成(たくないmt.exeたいものである携帯広コンパイラでコンパイル)、どのように組み込み使用しますか?ものは何かの側に組み立てを意味するのか。

基本的には、どこで見ることができまどのような仕様の代わりにMSの膨?

いただいた皆様、本当に答えしたことも、

役に立ちましたか?

解決

使いインクルードファイルのすべてのシDLL、vcmanifest.h,そしてセットすべてのプロジェクトへの組み込み、マニフェストファイルです。

vcmanifest.h

/*----------------------------------------------------------------------------*/

#if _MSC_VER >= 1400

/*----------------------------------------------------------------------------*/

#pragma message ( "Setting up manifest..." )

/*----------------------------------------------------------------------------*/

#ifndef _CRT_ASSEMBLY_VERSION
#include <crtassem.h>
#endif 

/*----------------------------------------------------------------------------*/

#ifdef WIN64
    #pragma message ( "processorArchitecture=amd64" )
    #define MF_PROCESSORARCHITECTURE "amd64"
#else
    #pragma message ( "processorArchitecture=x86" )
    #define MF_PROCESSORARCHITECTURE "x86"
#endif 

/*----------------------------------------------------------------------------*/

#pragma message ( "Microsoft.Windows.Common-Controls=6.0.0.0") 
#pragma comment ( linker,"/manifestdependency:\"type='win32' " \
                  "name='Microsoft.Windows.Common-Controls' " \
                  "version='6.0.0.0' " \
                  "processorArchitecture='" MF_PROCESSORARCHITECTURE "' " \
                  "publicKeyToken='6595b64144ccf1df'\"" )

/*----------------------------------------------------------------------------*/

#ifdef _DEBUG
    #pragma message ( __LIBRARIES_ASSEMBLY_NAME_PREFIX ".DebugCRT=" _CRT_ASSEMBLY_VERSION ) 
    #pragma comment(linker,"/manifestdependency:\"type='win32' "            \
            "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".DebugCRT' "         \
            "version='" _CRT_ASSEMBLY_VERSION "' "                          \
            "processorArchitecture='" MF_PROCESSORARCHITECTURE "' "         \
            "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
#else
    #pragma message ( __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT=" _CRT_ASSEMBLY_VERSION ) 
    #pragma comment(linker,"/manifestdependency:\"type='win32' "            \
            "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' "              \
            "version='" _CRT_ASSEMBLY_VERSION "' "                          \
            "processorArchitecture='" MF_PROCESSORARCHITECTURE "' "         \
            "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
#endif

/*----------------------------------------------------------------------------*/

#ifdef _MFC_ASSEMBLY_VERSION
    #ifdef _DEBUG
        #pragma message ( __LIBRARIES_ASSEMBLY_NAME_PREFIX ".MFC=" _CRT_ASSEMBLY_VERSION ) 
        #pragma comment(linker,"/manifestdependency:\"type='win32' "            \
                "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".MFC' "              \
                "version='" _MFC_ASSEMBLY_VERSION "' "                          \
                "processorArchitecture='" MF_PROCESSORARCHITECTURE "' "         \
                "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
    #else
        #pragma message ( __LIBRARIES_ASSEMBLY_NAME_PREFIX ".MFC=" _CRT_ASSEMBLY_VERSION ) 
        #pragma comment(linker,"/manifestdependency:\"type='win32' "            \
                "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".MFC' "              \
                "version='" _MFC_ASSEMBLY_VERSION "' "                          \
                "processorArchitecture='" MF_PROCESSORARCHITECTURE "' "         \
                "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
    #endif
#endif /* _MFC_ASSEMBLY_VERSION */

/*----------------------------------------------------------------------------*/

#endif /* _MSC_VER */

/*----------------------------------------------------------------------------*/

他のヒント

最も単純なもの:仮にデフォルトのインストールVS2005、パスのように:

C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT

行、鷲掴みにファイルをこのredistフォルダに置きます。マニフェストのmsvcr80.dll (少なくとも)に対応しています。exeフォルダにまとめた。これらのファイルの現在のルートの設置をおexe、すべてのdllクに対して、正常に先進的な統合モジュール、MSIsあるいは実際にどのような時検出のランタイムが表示されます。.

こちらのブログ を説明する合理的な背景にSxS crt決定VC++.で説明するのか悪いのでは静的にリンクをcrt、なぜなんです。

こちらは 文書をどのように静的にリンクをcrt.

でも、私たこれらの課題でもあったので、おそらくいくつかの私のコメントすることができます。

  1. マニフェストがxmlファイルです。がVSでくれるとき、コンパイル、その他のソリューションはリソースファイル(.rc)とコンパイルで作成リソースファイル(.res)のコンパイラ(rc.exe)に含まれVS.すぐ走らせたいというのVSコマンドラインからツールメニューの原因になりますのrcは、どの設定、さまざまな環境変数を修正。その後コンパイルリソースです。この結果、.resファイルが使用できるその他のコンパイラでコンパイル.
  2. だれにマニフェストのxmlファイルのサイズで割れる4.追加の空白文字の中心部まで行く事が出来ることが必要です。に努める必要性を回避するために文字の前には看xmlタグまたは終了後のxmlタグです。私は時々あった問題です。いステップ2が正されるものと考えられ側に設定。チェックできる場合は、お間違えによる看のエグゼ資源エディタ(例えばdevenv.exeやの検討、マニフェスト資源です。でも例を見て、正しいマニフェストにより内蔵のファイルが注が大幅に向上し、exesしていかな違いうidの資源を与える必要があります.

か試したいと思いwindows Vistaくことです。

彼らは再頒布可能、再頒布可能パッケージ内msvsンをクリックします。

の構築とランタイムの追加に対応するパッケージをインストーラのかわいです。その違いはなく、その を設置 別の所在があるのではなくアプリを探することがあります。

その他、MSDNは基本的には為になっており古書windowsのc++プログラミング

の答えです。の展開のため、私で3オプションとします。

  • ます。msiが合併しております。
  • の再頒布可能VSパッケージを実行する前に自分でインストーラー
  • 転載-複製を再頒布可能 ファイル に沿って、自分の願います。この場合、どうやって参照でファイルシステムの階層言bar/foo1/foo1.dll やbar/foo2/foo2.dll 参照msvcr90.dll バー/)?いものの明らかなと思コピーはdllにディレクトリ毎場合はdllに依存します。

ご使用になれませんのでVC++8SP1/9CRTとして統合モジュールのwindows Vistaおよびwindows Server2008の場合のサービスが選択されているプログラム実行するかどうか前に"InstallFinalize"アクションのせん。※

これは、dllを設置しWinSXSの"InstallFinalizeアクション。

が、MSI"ServiceStart"アクションが付属。

での使用のいずれかbootstrapper"http://www.davidguyer.us/bmg/publish.htm"

また、使用にインストーラchaingingのインストーラー4.5.ことが必要になりbootstrapperイ4.5んでいらっしゃるようで、ビットの意味..

を目的とする場合に専用のコントロールパネルに、Microsoft Dll/.マニフェストファイルを使用してJava JNIそのまま投入する必要があるのbinディレクトリのJDK/JRE.

る場合には、アプリJBoss、そのまま投入する必要があるのJBoss/binディレクトリです。

お客様のJNI DLL適切な場合に使います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top