ビルシdll windows:SxS,マニフェストとしてジャズ
質問
以来、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.
でも、私たこれらの課題でもあったので、おそらくいくつかの私のコメントすることができます。
- マニフェストがxmlファイルです。がVSでくれるとき、コンパイル、その他のソリューションはリソースファイル(.rc)とコンパイルで作成リソースファイル(.res)のコンパイラ(rc.exe)に含まれVS.すぐ走らせたいというのVSコマンドラインからツールメニューの原因になりますのrcは、どの設定、さまざまな環境変数を修正。その後コンパイルリソースです。この結果、.resファイルが使用できるその他のコンパイラでコンパイル.
- だれにマニフェストの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適切な場合に使います。