トップページ⇒tech
39コメント13KB

DLLって

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん01/09/05 00:12ID:9l6nkCGI
DLLって関数群(ライブラリ)じゃないですか。
DLLのなかにスレッドを持たせることもできますよね。
今後も価値のある技術なんですか?
普通にライブラリ(.lib)でも問題ないですよね。
識者の方ご意見お待ちしてます。(まじスレ)
0002デフォルトの名無しさん01/09/05 00:27ID:RgMRPKXI
>>1
プログラムのコード
 と
実行しているプログラムの状態(プロセス/スレッド)

の区別はついてますか? DLL, スタティックリンクライブラリとは
直交する話だけど。
0003デフォルトの名無しさん01/09/05 00:30ID:9l6nkCGI
いや、もちろんマルチスレッドプログラミングを
一応はしてましたから。(実働してます。)
ただ、dllの用途が思いつかなかったのです。
dllって一回くらい使って見たいのですが、これって
用途が思いつかない…。
0004デフォルトの名無しさん01/09/05 00:38ID:a3PLHGJI
1. ストリングリソースをdllにする。実行環境(日本語、英語)によってメッセージを変える。
2. どっかの下請けにインターフェイスだけ決めて中身をつくってもらう。
こっちゃは、その中身が動くもんとしてGUIを作る。動かんときはdllだけ作りかえる。
こっちゃのコンパイルの必要なし。
こんなことも思いつかないようでは、逝ったほうか良い。
0005デフォルトの名無しさん01/09/05 01:03ID:9l6nkCGI
複数人数で開発する場合なんだ。
なる。
今後、複数人数で開発することがあれば使うことに
なるんだろうけど、今はいりません。
じゃ、お望みどおり逝ってきます。
0006デフォルトの名無しさん01/09/05 01:36ID:u0i7tb/6
エキスパートCプログラミングのp125辺りから立ち読みしてください。
基本的には実行モジュールが小さくなる点と、異なるプロセスが同時に
扱えるためリソースの節約になる事がメリットです。
>>4のは別に普通のライブラリでも良いような気がする。
0007デフォルトの名無しさん01/09/05 02:22ID:yPl1nwvo
DLLはLibと違って別の言語から呼べる。
0008デフォルトの名無しさん01/09/05 02:23ID:qCEVoVh2
DLLはダル-
LIBはリブ-
0009 01/09/05 02:26ID:8z0WBIiA
プラグインなんかによく使うんじゃん?

dll使わないプラグインつくる知識が無いよ。鬱
どうやって本体とデーターのやりとりするんだろうか?
教えろ
0010お胸おっぱい01/09/05 02:29ID:Bqx9xP/Y
プログラム実行時に動的にロード/アンロードできるし。
→応用例1: Excel に客依存特殊関数追加
→応用例2: 運用を止めずにプログラム修正 (但し、事前の検証は念入りに)
0011デフォルトの名無しさん01/09/05 02:29ID:qCEVoVh2
>9
無限に広がる自分の可能性にかけるんじゃよ。
0012お胸おっぱい01/09/05 02:39ID:Bqx9xP/Y
>>9
別プロセス蹴飛ばしてパイプなんてどうよ。
0013デフォルトの名無しさん01/09/05 07:12ID:P9ki0xf2
>>7
アレ?
なんで Lib は駄目なの?
0014デフォルトの名無しさん01/09/05 10:34ID:Q//JF6Ws
1はSusieプラグインとかアーカイバDLLとか知らんのでしょう。
0015デフォルトの名無しさん01/09/05 10:55ID:ghUfF.qw
>>13
ぜんぜん問題ないよ。>>7の理由が聞きたいage。
0016デフォルトの名無しさん01/09/05 11:32ID:qZJvlE5Y
つーかWindowsはDLLでできてますが何か?

KERNEL32.DLL
GDI32.DLL
USER32.DLL
以下略
0017デフォルトの名無しさん01/09/05 12:38ID:yTIAOUhE
>>16
> つーかWindowsはDLLでできてますが何か?
どれに対する返答?
0018デフォルトの名無しさん01/09/05 13:05ID:xCXieHAs
>>6
> >>4のは別に普通のライブラリでも良いような気がする。

lib だとライブラリが修正されるたびにソイツを使ってるモジュールもビルドし直す
ハメになるから鬱だぞ。
特にそのライブラリが複数のモジュールで利用されてる場合とかだとサイアク。
0019デフォルトの名無しさん01/09/05 13:08ID:/8kfRrqA
test
0020デフォルトの名無しさん01/09/05 14:15ID:iUZCS8gE
>>12
変数や関数に直接アクセスできないんで、効率も悪いし、
シリアライズ(今風に言えば)しないとならないのが面倒だし、
セマンティックギャップにも苦しむ羽目になるし。
いいことなし。

パイプ程度で「部品化」がOKだと思ったのであろう古のUnix屋の発想は、アンティーク。

注:
ヴィンテージは「古くて使い物になるもの」
アンティークは「古くて使い物にならないもの(飾りとかとしての価値は別だが)」

もっともUnix世界では、プロセスの「中」はCでも汗でもご自由にの無法地帯なので、
怖くて気楽に外と接続できない。そのため敢えてパイプというショボい手段しか提供しない
という悲観的モデルが必要だったのだろうことは、理解できる。
0021デフォルトの名無しさん01/09/05 14:22ID:bCxH977s
プロセス「中」が無法地帯じゃないOSは?>>20
0022デフォルトの名無しさん01/09/05 14:24ID:iUZCS8gE
リンク解決の問題については、

*DLL交換に際して「exe」を「リビルド」しなくてもいい
*DLL交換に際して「プロセス」を「終了」しなくてもいい

主に二つの効果が期待できるね。
もっともexeの作り方次第では前者のメリットしか享受できないが。

後者はAPI(winならLoadLibrary、unixならdlopen)を使うことで
実行時に動的にリンクを制御する。
rubyの「拡張ライブラリ」もこれ。
ruby.exe自体が将来作られるdllを知ってるわけじゃないんで、
ruby.exeの中でdll名を動的に生成してAPIでLoadしてる。
0023名無しさん01/09/05 15:17ID:lN2bBg0.
メモリ内でも共有されるのは素晴らしいことだと思う。
0024デフォルトの名無しさん01/09/05 22:13ID:4X6aBreU
>>22
> *DLL交換に際して「プロセス」を「終了」しなくてもいい
swaprun でもない限りロード中はそのファイルはロックされているので、
やはりプロセスを終了しなければならないと思われ。
0025デフォルトの名無しさん01/09/05 22:32ID:rMkdIfwc
>>24
当然 FreeLibrary() するのは前提だと思うが。
0026名無しさん@XEmacs01/09/05 23:20ID:c8mzLy0s
>>18
で、DLLのバージョンにはまりまくって.NETではセミスタティックリンクに戻
したわけか。
0027デフォルトの名無しさん01/09/05 23:55ID:dOKkuiOI
>>21
>プロセス「中」が無法地帯じゃないOSは?

JavaOSまんせーまんせーまんせー!

JavaOSのあれをプロセスと呼ぶのは少し間違っているけど、だいたいはそういうこと。
0028デフォルトの名無しさん01/09/06 00:03ID:K/RoSyoM
ドゥルルルルルル
0029デフォルトの名無しさん01/09/06 01:28ID:2eP4Xj2U
>>27
「JavaOSのあれ」について技術的な詳細を述べたドキュメントを希望。その書き方
だと、さっぱり分からん。
0030デフォルトの名無しさん01/09/06 12:04ID:BkON7Ark
dllは結局複数プログラムで何度も使われる可能性のある
コンポーネント化できる関数群があったとしたら、便利って事だよね。
kernel32.dllなどがstatic libだった時を考えてみな。
そもそもあれらの関数の実装をexeに入れることになって、巨大になるだろうし、
例えばあるアプリケーション(複数)がその中のlibの実装に問題があるために
障害が発生している場合、現在ではsp nを入れ替えれば済む話を、それぞれの
アプリケーションベンダーがビルドし直してリリースしなくてはならない。
MSのミスなのにそんな羽目になるのはいやだ。
0031デフォルトの名無しさんNGNG
実行時の動的ロードの恩恵として本体exeの起動が早くなる。
これ、でかいアプリを作るときには結構重要。
0032デフォルトの名無しさんNGNG
初歩的な質問でごめんなさい。dllってどうやって作るの?
開発言語は?
あとどうやって使うの?
0033nanasisanNGNG
>>32
(1) Microsoft Visual StudioでもBorland Delphiでも良い。ほとんどの言語で作ることができるはず。
(2) 使い方はそれぞれの言語のマニュアルをお読みなさい。
0034デフォルトの名無しさんNGNG
早速ありがとう。
VBAで作って、dbMAGICってソフトに組み込みたいんだけど。
VBAでも作れる?
どうすればいいの?>>33
0035デフォルトの名無しさんNGNG
残念ながらVBAではできまへん。
VBなら出来ます。(但し、ActiveX-DLLのみ)
0036お胸おっぱいNGNG
>>20
> いいことなし。
勿論。けど >>9 が DLL やだって言うからさ。
因みに、Unix でプラグイン実装するのも、やっぱり共有ライブラリを使うのが吉。

> そのため敢えてパイプというショボい手段しか提供しない
> という悲観的モデルが必要だったのだろうことは、理解できる。
理解できてないじゃん。
プロセス間の通信手段にパイプしかないワケじゃないよ?
0037デフォルトの名無しさんNGNG
>>35
例えばエクセルで、dllを読みこませるにはどうしたらいいですか?
0038デフォルトの名無しさんNGNG
>>37
Declearをヘルプで引いてみそ
0039デフォルトの名無しさんNGNG
>>38
細かいようだが念のため
×Declear
○Declare
■ このスレッドは過去ログ倉庫に格納されています