- 444 名前:396 mailto:sage [2018/02/19(月) 15:28:56.74 ID:v4nZjJQ1.net]
- 調べてみると、/wine/libs/wine/loader.c の中の build_dll_path()
関数の中で、環境変数 WINEDLLPATH が、読み取られ、: を 0x00に 変えてから、dll_paths[] 配列に : で区切られたそれぞれの文字列 の先頭アドレスを代入している。 しかし、その処理に入る前に、get_dlldir() 関数が NULL 以外を返した場合、 dll_paths[0] にその関数が返した文字列のアドレスを入れてしまう。 そして、実際の get_dlldir() は、"/usr/local/bin/../lib/wine" という文字列を返してくるので、そっちのパスの方が、WINEDLLPATH の優先順位よりも上になってしまう。そして、 /* retrieve the default dll dir */ const char *get_dlldir( const char **default_dlldir ) { *default_dlldir = DLLDIR; return dlldir; } となっているが、DLLDIR が全ての拡張子の全ファイルを全文検索しても どこにも定義されておらず、参照されているのも唯一この関数だけだった。 これだと、WINEDLLPATH で「Override」できないのも当然だけど、 そもそも、DLLDIR がどこで定義されているのかが分からないので 誰かの教えをいただきたいです。
|

|