ページ 1 / 1
プロジェクトプロパティのマルチスレッドについて
Posted: 2012年6月03日(日) 15:12
by 立花希海
「プロパティ」「コード生成」の「ランタイムライブラリ」の"マルチスレッド(/MT)"などの設定についてなのですが
"マルチスレッド DLL(/MD)" だと他の環境で動かないとか色々と問題があると聞いたのですが具体的にはどんな問題があるのでしょう?
逆に"マルチスレッド DLL(/MD)"にしないといけない場合ってどんな場合なのでしょう?
まだ始めたばかりなのでよろしくお願いします
Re: プロジェクトプロパティのマルチスレッドについて
Posted: 2012年6月03日(日) 15:31
by softya(ソフト屋)
/MTだとstaticリンクされるのでWindowsUpdateの恩恵は受けれないですがランタイムライブラリのインストールの心配はなくなります。
/MDだとランタイムライブラリがインストールされていないと動きませんが、ランタイムライブラリの致命的バグの時にWindowsUpdateで更新されるので開発側の手間はなくなります。
あとDLLはメモリを共有するので/MDを選べばメモリ消費も減り、実行ファイルがコンパクトになるメリットもあります。
【補足】
ランタイムライブラリは、「Visual C++ 再頒布可能パッケージ」 としてマイクロソフトから提供されています。
開発環境毎に違うので注意して下さい。
「ダウンロード詳細 Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x86)」
http://www.microsoft.com/downloads/ja-j ... 28b8578f03
「ダウンロード詳細 Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)」
http://www.microsoft.com/downloads/ja-j ... 02B2AF5FC2
「ダウンロード詳細 Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)」
http://www.microsoft.com/downloads/ja-j ... 9C36F85647
Re: プロジェクトプロパティのマルチスレッドについて
Posted: 2012年6月03日(日) 15:34
by naohiro19
「マルチスレッド(/MT)」になっている場合はスタティックライブラリの「libcmt.lib」が使われます。
「マルチスレッドDLL(/MD)」になっている場合は スタティックライブラリの「msvcrtd.lib」が使われます。
DXライブラリはReleaseモードでビルドしている場合は「マルチスレッドDLL(/MD)」にすると「LINK : warning LNK4098: defaultlib 'libcmt' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。」という警告が出力されるので設定さえ間違わなければOKです。
Re: プロジェクトプロパティのマルチスレッドについて
Posted: 2012年6月04日(月) 00:09
by 立花希海
なるほどー
自分の環境だとVisualStudioがあるからどっちでも問題ないんですね
先に進むとnaohiro19さんのお話のような場合も出てくるのですね。まだ私には分からないですケド。
自動的にアップデートされてサイズも小さいのも魅力ですね
でもランタイムライブラリもVisualStudioもインストールされていない環境だと実行できないんですね。
自分の環境で、他の人がどうなって動かないのかとかホントに紹介したランタイムライブラリで動くようになるのかとか
確認できないとキモチワルイです。
VisualStudioをアンインストールする以外に簡単に確認する方法とかないでしょうか
よろしくお願いしますm(_ _)m
Re: プロジェクトプロパティのマルチスレッドについて
Posted: 2012年6月04日(月) 00:38
by softya(ソフト屋)
とりあえずは動的にDLLを読みこんでみるプログラムを作ってみるって手は思いつきますがチェックツールがあったかは調べておきます。
【補足】
「VC のランタイムチェック」
http://www7a.biglobe.ne.jp/~kasachan/VCrt_Check.html
このツールで確認できます。
あるいは、コントロールパネルの「プログラムと機能(OSバージョンで名前が違う可能性アリ)」でインストール済みかは確認できます。
【補足ついで】
参考としてVMwarePlayer(無料の仮想PC)等でピュアなインストールしたばかりOSの状況を作り、その上でテストする方法をご紹介します。
こういうOSの体験版を利用します。
「Windows 7 Enterprise 評価版 ダウンロード」
http://technet.microsoft.com/ja-jp/eval ... 42495.aspx
Win8ですがWin7でも同じです。Win8を入れてもよいでしょう。
「VMware Playerに「Windows 8 Consumer Preview」をインストールしよう! - 裏技shop DD」
http://shopdd.blog51.fc2.com/blog-entry-1034.html
Re: プロジェクトプロパティのマルチスレッドについて
Posted: 2012年6月04日(月) 22:50
by 立花希海
ありがとうございます!!
なんかできそうです。助かりましたー