トップページ⇒tech
111コメント25KB

DLL技術について語るスレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
教えてください
0002デフォルトの名無しさんNGNG
教えてスレ断固反対
0003デフォルトの名無しさんNGNG
DLLについて良くわからんです。
Webのどこら辺を調べればいいですか?
お薦めの本はなんでしょうか?
0004デフォルトの名無しさんNGNG
>>3
そう質問スレで聞くだけでは何が不満だったのだい?
0005デフォルトの名無しさんNGNG
DLLって、結構深いかなぁと思ったので。

質問スレだとあんまり突っ込んで聞けないでしょ。
0006デフォルトの名無しさんNGNG
深かろうがなんだろうがキミに教えるだけのスレに存在する意味は無いってことです。
0007デフォルトの名無しさんNGNG
酷いなぁ。

DLL関連のスレ見あたらないし、立ててみたんだけどなぁ。
結構、需要はあるんじゃない?
0008デフォルトの名無しさんNGNG
>>7
レベルが低すぎてスレが立たないんだとは思わんのかね?
大体、DLLって語で何を指そうとしてるんだ?
まさかWindowsのDLLの使い方とかくそたわけたことを抜かすんじゃあるまいね?
0009デフォルトの名無しさん ◆MSEEFfect2 NGNG
   (V)∧_∧(V)
    ヽ(・ω・)ノ  フォッフォッフォ
.     /  /
    ノ ̄ゝ


.          (V)∧_∧(V)
           ヽ(   )ノ  フォッフォッフォ
.           /  /
       .......... ノ ̄ゝ

すまない、おもしろそうだったんで、つい・・・
0010デフォルトの名無しさんNGNG
DLLはOSや処理系への依存が強いから、
それぞれで質問したほうがいいと思うズラ
0011デフォルトの名無しさんNGNG
DLL で思い出したんだが、VC++6 の MSVCP60*.DLL の iostream 周りのリーク
VC++7 で直ったんだろうか。
0012デフォルトの名無しさんNGNG
まあ、あんまり分散してても分かりづらいが、
まとまりすぎてても必要な情報がどんどん流れてくからな。
直感的にDLLな話題でもしてけば良いんじゃない?
0013デフォルトの名無しさんNGNG
プラグインシステム用のデザインパターンってありますか?
0014デフォルトの名無しさんNGNG
さっき読んだ本によるとPEのDLLはエクスポートテーブルとインポートテーブルがなんたら
だそうだ。
0015デフォルトの名無しさんNGNG
PEでないDLLに意味はあるんでしょうか、、、
0016デフォルトの名無しさんNGNG
BC++で作ったDLLを簡単にVBで使う方法ってある?
型とか全然違うのでシンドイんだけど。
0017デフォルトの名無しさんNGNG
>>15
ELFの奴とか
ふつーDLLじゃなくてshared libraryとか言うようだが
0018デフォルトの名無しさんNGNG
Windows dll の仕様は何処で調べられますか?
0019デフォルトの名無しさんNGNG
>>16
あるよ
0020デフォルトの名無しさんNGNG
>>19
バカは放っておけ
0021デフォルトの名無しさんNGNG
例外処理(KERNEL32.DLL)にあります。
っていうバグがでるんですけど、これ、バグの元はどうやって調べたら
いいんですか?
アプリケーションの終了中にでるので見当もつきません。
0022デフォルトの名無しさんNGNG
>>バグの元
WIN作った人間の脳味噌
0023デフォルトの名無しさんNGNG
>>21
KERNEL32.dll の例外発生アドレスにブレークポイントを置いて実行。
後はバックトレースすれば?
0024デフォルトの名無しさんNGNG
KERNEL32 の API の使い方を間違えてるだけだろ。
0025デフォルトの名無しさんNGNG
そしたら本当はパラメータチェック等で弾くべきで
カーネル内で落ちるなど論外なのだが
まあドライバがバグってる可能性もあるな
0026デフォルトの名無しさんNGNG
普段は実行中にエラーがでるんでなんとか見当つけることできたんだけど、
デバッグウィンドウみたらいつのまにか大量にでていたので、どこやら。
ちなみに、(MSCTF.DLL)も終了した時に大量にでるんですけど、
これって何をしているDLLなんでしょう。
0027デフォルトの名無しさんNGNG
>>25
ユーザプロセスが落ちているんだろうからそんなに問題視する必要もないと思うが。

>>23
95系だとカーネルのDLLが配置されるメモリ空間にはcopy on writeできない。
のでブレークポイントが書き込めないはず。
0028デフォルトの名無しさんNGNG
実は、ActiveX Dllのことを聞いてるんだよ。
0029デフォルトの名無しさんNGNG
>>23
大量に発生するDLLのエラーは全部
0xC0000005: Access Violation。
とでるので、VC6のブレークポインとダイアログに
この位置で停止のなかに入れてみたんですけど、
実行したらダメって言われてしまいました。
0030VC6NGNG
やんっダメ。
0031プログラムNGNG
いいじゃねーか、ホラ。
ぐへへ。
0032VC6NGNG
ダメー。そこはダメー。
0033デフォルトの名無しさんNGNG
>>27
9xだとコンテキスト切り替えのコストをケチってか本来カーネルモードで
実装するような処理を半分ユーザーモード側でやってるからねえ。
まあそれはOSが腐ってるのであってバグってるプログラムの責任ではないか。
0034デフォルトの名無しさんNGNG
MSCTF.DLL
これって、どうやらOffeceXPインストールするとあらわれて、
それがバグってるみたいですね。
でも、デバッグ実行するときに表示される
’〜.dll’をロードしました、合致するシンボル情報は見つかりませんでした。
とでるのって、どういう意味なんですか?
どなたかしりませんですか。
0035デフォルトの名無しさんNGNG
> ’〜.dll’をロードしました、合致するシンボル情報は見つかりませんでした。
> とでるのって、どういう意味なんですか?
そういう意味。 >> 34
*.dbg あるなら入れてミソ。
0036デフォルトの名無しさんNGNG
> 95系だとカーネルのDLLが配置されるメモリ空間にはcopy on writeできない。
> のでブレークポイントが書き込めないはず。
ウソ書かないよーに。 >>27

参照できないのは VxD アリーナ。
0037デフォルトの名無しさんNGNG
> アプリケーションの終了中にでるので見当もつきません。
どっかの糞な DLL の DLL_PROCESS_DETACH が腐ってるパターンか。 >>21
0038デフォルトの名無しさんNGNG
> PEでないDLLに意味はあるんでしょうか、、、
ある。 >>15

たとえば InstallShield 6.x までの setup.exe は(わざと)NE 形式。
…で、たしか NE な DLL をロードしてプラットフォーム(CPU なども)を確認し、
そのあとエンジン部分を展開していたと思われ。
0039デフォルトの名無しさんNGNG
ELF Executable Linking File!マンセー
0040デフォルトの名無しさんNGNG
>>36
参照できないなんて誰も言ってないような…
んでcopy on writeは共有アリーナでやろうとするとると他のプロセスで
ブレークポイントを通過したときそのプロセスが落ちるから事実上できない、
という話では
0041デフォルトの名無しさんNGNG
>35
つまり、ロードしたけど、とくにどこにもDLLつかわれてないよ。
という意味ですか?

>*.dbg あるなら入れてミソ。
できたらもう少し詳しく知りたいのですが。

>37
これって、プロジェクトの設定とかで読みこまないようには
できませんか?
0042デフォルトの名無しさんNGNG
>>41
単にバージョンが違って関数が見つからないだけだろ。
クソスレ
0043デフォルトの名無しさんNGNG
と同時にクソレス
0044デフォルトの名無しさんNGNG
つーことは、これが表示されてんのってまずいの?
0045デフォルトの名無しさんNGNG
シンボル情報ってのは要するにデバッグ情報のことだろう?
シンボル情報があればソースコードの無いDLLでも
今どういう名前の関数が呼ばれてるか分かるって寸法だ。
0046デフォルトの名無しさんNGNG
ここはVC++スレですか
0047デフォルトの名無しさんNGNG
一応、DLLだからなんでも良いんちゃう?

思ったんだけど、DLLの仕様をある程度統一しない?
アレだと利用できます、これだと利用できません、だと何かと不便でしょ?

大まかなバイナリ仕様でも統一できない物かな?
で、細かい命令系は、CPUの汎用性に問題が出るから、依存を残しておいて、追々、
最適な物を選んで仕様化するとか。
まぁ、この時期になると、CPU仕様、OS仕様自体がある程度固まっちゃうことになるんだけど。
0048デフォルトの名無しさんNGNG


    J A V A マ ン セ ー

0049デフォルトの名無しさんNGNG
Javaでクラスを動的に取り込むのってなんていう名前の技術だっけ?
0050デフォルトの名無しさんNGNG
OLE
0051デフォルトの名無しさんNGNG
>45
ということは、
合致するシンボル情報は見つかりませんでした。
というのはプログラムでつかってないよ、という意味?
だとしたらやっぱり勝手に読んでバグ出して欲しくないので、
呼ばないようにできませんかね。
005245NGNG
>51
うーむ。さすがにちっと物わかりが悪くないか?
当然、開発環境付属のヘルプやマニュアルは調べてみたんだろうね?

ロードしたDLL(例えばfoo.dllとしよう)を解析するための
シンボル情報(foo.dbgとかfoo.pdbとか)が無いってことだよ。
dll自体はプログラムが必要としてるからこそロードされるんだ。

確かに外国製のを日本語化したソフトって、各種メッセージがやたら
分かりにくいことが多いけどな…。
005351NGNG
>>45
えー、ということは、
必要だけどロードには失敗しているってこと?
アプリ自体は動いているけど実は問題を含んでるの?
0054デフォルトの名無しさんNGNG
>>53
確かアプリが終了するときに落ちる…って書いてたろーが?
ロードに失敗するなら、最初からそのアプリを起動できないか、
もしくは実行途中でダイナミックにそのDLLをロードするときにエラーが発生するはず。

…だから DLL_PROCESS_DETACH じゃないかっつってんだけど。
0055デフォルトの名無しさんNGNG
>52
やっと理解できた気がします。ありがとうございました。
どこかでシンボル情報探してしらべてみます。
0056デフォルトの名無しさんNGNG
>>50
うそつくな
0057デフォルトの名無しさんNGNG
お前ら、今日も元気にリロケーションしてますか?
0058デフォルトの名無しさんNGNG
>>55
つーかOfficeのDLLのシンボルなんて配布されてねーんじゃねーの?
配布されてないなら「そのメッセージは気にしない」とするしかないが。
動作には関係ないんだし。
005950NGNG
>56 ありがとう。
006050NGNG
>>56
DDE
0061デフォルトの名無しさんNGNG
>>56
DDT
0062デフォルトの名無しさんNGNG
>>56
DLL
0063デフォルトの名無しさんNGNG
>>61
Dangerous Driver Tenryu
0064デフォルトの名無しさんNGNG
start win.com
0065デフォルトの名無しさんNGNG
>>58
つぅかCOM使うのが正攻法だと思われ。
0066デフォルトの名無しさんNGNG
WIN.COM
0067デフォルトの名無しさんNGNG
COMMAND.COM
0068デフォルトの名無しさんNGNG
symdeb
0069デフォルトの名無しさんNGNG
シニス
0070デフォルトの名無しさんNGNG
Peニス
0071デフォルトの名無しさんNGNG
つまり、DLLについて詳しい2ちゃんねらーは少ないということでファイナルアンサー?
0072デフォルトの名無しさんNGNG
>>71
身の程知らずだな。
0073デフォルトの名無しさんNGNG
つまり、72 は DLL について詳しくないということでファイナルアンサー?
0074デフォルトの名無しさんNGNG
yes.
0075デフォルトの名無しさんNGNG
DLLMain っていつ使うんだろう?
0076デフォルトの名無しさんNGNG
普通のlibと
実行開始時読み込みDLLの、
メリットとデメリットおせーて。
0077デフォルトの名無しさんNGNG
>>75
それが呼ばれるタイミングで何らかの処理が必要な時。
0078デフォルトの名無しさんNGNG
>>76
前者は DLL が無いと起動できない。
アタッチ操作は不要。
起動と同時に DLL もロードされる。

後者は DLL が無い時にエラー処理ができる。
アタッチ操作が必要。
アタッチされるまで DLL はロードされない。
0079デフォルトの名無しさんNGNG
両方のいいとこどりがdelayload
0080デフォルトの名無しさんNGNG
>>71
特に悩むことなく使えるから質問するようなこともないのでは
0081sageNGNG
>>36 デバイスドライバは詳しくないんだが、漏れのレスは上位2GがVirtualProtectで
PAGE_WRITECOPYできないことを言いたかった。あってる?
もっとも、代わりにローダはデバッグ実行時(?)にフックテーブル生成するんだっけ。

>>78の前者が>>76の後者でわ。Windowsだとこんな分類。
・普通のlib
・ロード時動的リンク(メイク時にインポートライブラリというのとリンクする)
・実行時動的リンク(実行時にLoadLibrary&GetProcAddressを使う)

最近では遅延インポートなるものもあって、ロード時動的リンクしつつ、
proc_ptr = GetProcAddress(...);
if(proc_ptr == NULL) エラー処理;
と同等のことをできるらしい。
0082デフォルトの名無しさんNGNG
ageちまった…
0083デフォルトの名無しさんNGNG
> 最近では遅延インポートなるものもあって、ロード時動的リンクしつつ、
> proc_ptr = GetProcAddress(...);
> if(proc_ptr == NULL) エラー処理;
> と同等のことをできるらしい。

ざっと MSDN 眺めた限りでは、フックだの何だのしなきゃ逝けないみたいで
面倒そうだ。
0084デフォルトの名無しさんNGNG
フックだのなんだのは凝ったことをしたいときだけで
普通はリンカオプションに /delayload を追加するだけ。
0085デフォルトの名無しさんNGNG
>>84
83 の引用文を読んだ上で言ってる?
0086デフォルトの名無しさんNGNG
>>85
> proc_ptr = GetProcAddress(...);
> if(proc_ptr == NULL) エラー処理;
をそのままやればいいじゃない。
取った関数ポインタは捨ててもいい分楽。
0087デフォルトの名無しさんNGNG
>>86
遅延インポートなのに GetProcAddress() の引数に何を渡すの?
0088デフォルトの名無しさんNGNG
>>86
アフォですか?
0089デフォルトの名無しさんNGNG
>>87
モジュールハンドルと関数名
>>88
じゃあもっと簡単な方法があるの?
フックが面倒だとほざくから安易な逃げ道を紹介してみただけなんだが。
0090デフォルトの名無しさんNGNG
>>89
あのさー。
その、モジュールハンドルは、どっから持ってくるの?
まさか、GetModuleHandle() とか言う?
そんな事するくらいなら、delayload 使わないで LoadLibrary() 呼ぶのと
何が違うの?
わざわざ delayload にしてる意味無いじゃん。
そんな提案してちゃあ、アフォって言われたって当然だよ。

結局、エラーチェックは現実的じゃないから、ロード時リンクの時と同様に
リンクエラーは想定しないというのが最適解じゃないの?
エラーフックが嫌だと言うならね。
009190NGNG
> 結局、エラーチェックは現実的じゃないから、ロード時リンクの時と同様に
> リンクエラーは想定しないというのが最適解じゃないの?

あ、もしかして 84 はこの意味で言った?
0092デフォルトの名無しさんNGNG
DLLが無きゃ無いでなんとかしたいんだよね
0093デフォルトの名無しさんNGNG
その場合は、LoadLibrary() によるリンクで書くのが一番素直じゃないか?
0094デフォルトの名無しさんNGNG
Linkers & Loaders
http://www.amazon.co.jp/exec/obidos/ASIN/4274064379/ref%3Dpd%5Fsim%5Fdp%5F4/250-0706835-4041019

どうよ?
0095デフォルトの名無しさんNGNG
コンパイルの時点で最適化するんじゃないの?
初めてその関数が使われるであろうところの直前でDLL読み込むみたいな?
0096デフォルトの名無しさんNGNG
>>95
> コンパイルの時点で最適化するんじゃないの?
と、
> 初めてその関数が使われるであろうところの直前でDLL読み込むみたいな?
のつながりが全く読めないのだが。
何を言いたいのか分からないし、どこにレスしてるのかも分からない。
0097デフォルトの名無しさんNGNG
>>83
そのDLLが使ってる関数1つ呼び出して例外をキャッチすればいい
0098デフォルトの名無しさんNGNG
アドレスもわかんないのに呼び出すなんてできないよ
0099デフォルトの名無しさんNGNG
やっぱりIriaがある日本のDLL技術は優れていると世界的にもいえるのでしょうか.地きゅうびょうとかもあるし.
0100デフォルトの名無しさんNGNG
IriaとDLLは関係ない。
0101デフォルトの名無しさんNGNG
>>99-100ネタなんだろうが…。
ワラタ
0102デフォルトの名無しさんNGNG
よくわからんが 98 はアフォ決定。
0103デフォルトの名無しさんNGNG
>>102
delayloadの原理がまったくわかってないんだな
0104デフォルトの名無しさんNGNG
基本的に、DLL のルーチンの呼び出しはポインタ経由という事でよろしいか?
0105デフォルトの名無しさんNGNG
VC++でActiveXDLLが作りたいのですが、参考になるサイトありませんか?
0106デフォルトの名無しさんNGNG
とりあえずチュートリアル
0107デフォルトの名無しさんNGNG
ときめきチュートリアル
0108デフォルトの名無しさんNGNG
>>105
マイクロソフト
0109デフォルトの名無しさんNGNG
マイ糞ソフト
0110デフォルトの名無しさんNGNG
♥
0111デフォルトの名無しさんNGNG
Objective-C 最っ高
■ このスレッドは過去ログ倉庫に格納されています