Revision 1 as of 2011-09-05 01:59:02

Clear message
Locked History Actions

swt

SWT

SWTはなぜDLLが要らない(ように見える)のか

大昔のSWTはjarファイルとDLLファイル(Windowsの場合)とに分離しており、これをアプリケーションで使うにはアプリ自体にはjarを付属させ、dllファイルは「パス」に置くしかなかった(起動時にjava.library.pathを指定してもよいが)。しかし、現在のswtはswt.jarのみをアプリに付属させれば良いようになっている。

しかし当然のことながら、相変わらずDLLは必要なのであり、しかもこれはOS側がロードするものなので、それぞれのDLLはそれぞれ一つのファイルとなっていなければならない。一体どうやっているのか?

jarの中にすべてのdllが含まれている

例えば、win32-win32-x86用のswt.jarを展開してみると、以下のようなファイルが現れる。

2011/09/05  10:43    <DIR>          .
2011/09/05  10:43    <DIR>          ..
2011/06/13  20:51               187 external.xpt
2011/09/05  10:43    <DIR>          META-INF
2011/09/05  10:43    <DIR>          org
2011/05/26  19:13            53,248 swt-awt-win32-3735.dll
2011/05/26  19:13           118,784 swt-gdip-win32-3735.dll
2011/05/26  19:13            77,824 swt-webkit-win32-3735.dll
2011/05/26  19:13            61,440 swt-wgl-win32-3735.dll
2011/05/26  19:13           430,080 swt-win32-3735.dll
2011/05/26  19:13            77,824 swt-xulrunner-win32-3735.dll
2011/06/13  20:51                13 version.txt
               8 個のファイル             819,400 バイト

このように、実はswt.jarのトップに必要なdllが格納された状態になっている。 これをどうやって実行時に「Windowsにロードさせる」だろうか?