プロジェクトプロパティのマルチスレッドについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
立花希海
記事: 9
登録日時: 13年前
連絡を取る:

プロジェクトプロパティのマルチスレッドについて

#1

投稿記事 by 立花希海 » 13年前

「プロパティ」「コード生成」の「ランタイムライブラリ」の"マルチスレッド(/MT)"などの設定についてなのですが
"マルチスレッド DLL(/MD)" だと他の環境で動かないとか色々と問題があると聞いたのですが具体的にはどんな問題があるのでしょう?
逆に"マルチスレッド DLL(/MD)"にしないといけない場合ってどんな場合なのでしょう?

まだ始めたばかりなのでよろしくお願いします

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: プロジェクトプロパティのマルチスレッドについて

#2

投稿記事 by softya(ソフト屋) » 13年前

/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
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

naohiro19
記事: 256
登録日時: 15年前
住所: 愛知県

Re: プロジェクトプロパティのマルチスレッドについて

#3

投稿記事 by naohiro19 » 13年前

「マルチスレッド(/MT)」になっている場合はスタティックライブラリの「libcmt.lib」が使われます。
「マルチスレッドDLL(/MD)」になっている場合は スタティックライブラリの「msvcrtd.lib」が使われます。

DXライブラリはReleaseモードでビルドしている場合は「マルチスレッドDLL(/MD)」にすると「LINK : warning LNK4098: defaultlib 'libcmt' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。」という警告が出力されるので設定さえ間違わなければOKです。

立花希海
記事: 9
登録日時: 13年前
連絡を取る:

Re: プロジェクトプロパティのマルチスレッドについて

#4

投稿記事 by 立花希海 » 13年前

なるほどー
自分の環境だとVisualStudioがあるからどっちでも問題ないんですね
先に進むとnaohiro19さんのお話のような場合も出てくるのですね。まだ私には分からないですケド。

自動的にアップデートされてサイズも小さいのも魅力ですね
でもランタイムライブラリもVisualStudioもインストールされていない環境だと実行できないんですね。
自分の環境で、他の人がどうなって動かないのかとかホントに紹介したランタイムライブラリで動くようになるのかとか
確認できないとキモチワルイです。
VisualStudioをアンインストールする以外に簡単に確認する方法とかないでしょうか

よろしくお願いしますm(_ _)m
マルチバイトを忘れずに

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: プロジェクトプロパティのマルチスレッドについて

#5

投稿記事 by softya(ソフト屋) » 13年前

とりあえずは動的に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
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

立花希海
記事: 9
登録日時: 13年前
連絡を取る:

Re: プロジェクトプロパティのマルチスレッドについて

#6

投稿記事 by 立花希海 » 13年前

ありがとうございます!!
なんかできそうです。助かりましたー
マルチバイトを忘れずに

閉鎖

“C言語何でも質問掲示板” へ戻る