ちゃっぴの監禁部屋

ガチガチに締めすぎて動きがとれなくなる。。。

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  405  : 記事  5  : コメント  12114  : トラックバック  134

ニュース

記事カテゴリ

書庫

日記カテゴリ

Communities

Personal Information

COM とか .NET assembly とかいろいろ種類がありますよね。
もちろん、C で作る普通のやつ(これをなんと呼べばよいかわからない。。。)

こちらの種類の用語、および区分の公式なやつってあるんでしょうか?

説明するときにいつも考えされるんだよな~。
なんて呼べばよいか?

投稿日時 : 2007年7月14日 18:58

コメント

# re: DLL の種類 2007/07/14 21:41 はつね
DLLはDynamicLinkLibraryなので実行時に動的にロードしてくるやつは、ことごとくDLLですね。
呼び分けるときは、COM、.NETアセンブリ、普通のDLLって言っているけれど公式にはなんていうんでしょうねー。

# re: DLL の種類 2007/07/14 22:33 ちゃっぴ
> 呼び分けるときは、COM、.NETアセンブリ、普通のDLLって言っているけれど公式にはなんていうんでしょうねー。

その普通の DLL の呼び方が知りたいんです。

でも、よく考えたら Windows に標準で付いているやつで、COM と同時に 普通の(あ~なんてゆうのかな~) entry point を持っている奴を見たことあるのでそういう分け方も難しいのかな?

# re: DLL の種類 2007/07/14 22:44 シャノン
Win32 Assembly なんてのもありますよ。
マニフェストを持つ「普通の」EXE/DLL は Win32 Assembly です。
.NET Assembly と Win32 Assembly は中身は違いますが、用途は同じですね。

COM DLL はエントリポイント、というかプロトコルが一定のルールに従っている「普通のDLL」の一種ですね。
VB6で作れるのは「ActiveX DLL」と呼ばれ、これはCOM DLLの特殊系ですね。

例えば、何らかのアプリケーションのプラグインとか、統合アーカイバプロジェクトのDLLも、プロトコルが定められています。
COM DLLを殊更にCOM DLLと呼び、こうしたプラグインなどは「普通のDLL」というのは、なんか違う気がします。

「普通の」の呼び方が特にないものって多いかもしれませんね。
興味深いです。

# re: DLL の種類 2007/07/15 1:09 ちゃっぴ
> Win32 Assembly なんてのもありますよ。

はじめて聞いた。。。

つまり、Win32 Assembly と .NET Assembly という大きな2つのくくりがあって、Win32 Assembly の中で、COM とか ActiveX とかいわゆる「普通の」というものになるんですかね。

う~む。適切な用語が普及しないと説明が難しいですね。



# re: DLL の種類 2007/07/15 6:44 シャノン
> Win32 Assembly の中で、COM とか ActiveX とかいわゆる「普通の」というものになるんですかね。

違います。この区分は直交するものです。なので、普通の DLL には、Win32 Assembly なものも、そうでないものもあります(マニフェストがなければ Win32 Assembly じゃありません)。
また、マニフェストは外付けできるので、普通の DLL にマニフェストファイルを用意してやれば、DLL 自体には手を加えなくても Win32 Assembly になります。
もっとも、VC++ 2005 以降では強制的にマニフェストが埋め込まれるので、VC++ 2005 以降で作られる DLL/EXE は、すべて Win32 Assembly ですがね。

# re: DLL の種類 2007/07/15 9:18 はつね
COMを特殊って捕らえてしまうから「普通の」って言葉がでてくるのですが、かといってWin32-APIとCOM DLLと言い分けるのもちょっと違う気がする。むずかしいね。


# re: DLL の種類 2007/07/16 17:36 ちゃっぴ
なるへそ、ややこしいですね。

とりあえず、こういうでっかいくくりがあり、

・ 普通の DLL
・ .NET Assembly

で、「普通の DLL」の下で manifest の有無によって、こう分かれる

・ Win32 Assembly
・ 普通の DLL

あと「.NET Assembly」に対抗する「普通の DLL」の下で、entry point というかそういった level で

・ 普通の
・ COM
・ ActiveX

とかに分かれる。ただし、これは厳密には DLL の種類とはいえないかもしれない。

ってゆうか、誰かこれなんとかして!

# re: DLL の種類 2007/07/17 12:29 とっちゃん
Assembly Manifest(Manifest に AssemblyIdentity タグのあるもの)が付いている場合のみ、Win32 Assembly になりえますが、あれば Win32 Assembly になるわけではありません。

これに、コード署名をつけて厳密名を持たせた場合「のみ」、Win32 Assembly となります。

で、DLLのほうですが、構造としては2パターンですかね。
1.特定のアーキテクチャに依存したエクスポートを持つ形式
2.特定のアーキテクチャに依存したエクスポートを持たない形式
に集約できると思います。

ま、2のほうがいわゆる「普通のDLL」と呼ばれるわけですが、こちらは原則として、
1.C リンケージでエクスポートされている
2.LoadLibrary + GetProcAddress でも ImportLibでも利用できる。
3.特定のコンパイラに依存しない
という点が共通事項として挙げられます。
1のほうにもこれらがかぶさる場合は多々ありますが、特定のアーキテクチャ用に用意されたエクスポートがないという点が異なるというくらいでしょうか。
結局のところ言い方がないので、「普通のDLL」ってのが一番無難なんじゃないかと...w
ちなみに、1に含まれるものは、COM アーキテクチャの要求するエクスポートを持つもの、自己登録アーキテクチャの要求するエクスポートを持つものなど、実に多彩です。
正直細かく分類していくのが面倒になるくらいいっぱいありますww
#ま、COMアーキテクチャも特定のインターフェースを実装するパターンごとに分かれるので、さらに分化されるわけですがwww


# re: DLL の種類 2007/07/18 0:36 ちゃっぴ
> これに、コード署名をつけて厳密名を持たせた場合「のみ」、Win32 Assembly となります。

.NET でなくとも厳密名はあるのか。。。

というかマジでややこしすぎですよね。
これじゃ始めたばっかりの人がわかるわけない。

整理してくれないかなぁ。。。

Post Feedback

タイトル
名前
Url:
コメント