2010-03-17 19 views
8

Programların kütüphanelerde arama yapabilmesi için linux üzerinde LIBRARY_PATH ve LD_LIBRARY_PATH ortam değişkenleri var. Pencerelerde benzer bir şey var mı? Özellikle Windows 7?DLL search on windows

Ayrıca, herkes gibi pencereler üzerinde çalışmak istediğimden ve geçici çözümlerde kendimi gizlememekten de ötürü, DLL kullanımı için en iyi uygulamaları bilmek istiyorum (onları nereye koyacağınız, envs'i kullanıp kullanamayacağınız vb.):

cevap

8

This MSDN article varsayılan arama sırasını açıklar. Alıntı:

  1. lpFileName tarafından belirtilen dizin.
  2. Sistem dizini. Bu dizinin yolunu almak için GetSystemDirectory işlevini kullanın.
  3. 16 bit sistem dizini. Bu dizinin yolunu alan bir işlev yoktur, ancak aranır.
  4. Windows dizini. Bu dizinin yolunu almak için GetWindowsDirectory işlevini kullanın.
  5. Geçerli dizin.
  6. YOL ortam değişkeni listesinde listelenen dizinler. Bunun, Uygulama Yolları kayıt defteri anahtarı tarafından belirtilen uygulama başına yolunu içermediğini unutmayın. DLL arama yolunu hesaplarken Uygulama Yolları anahtarı kullanılmaz.

(1), DLL dosyasının saplama kitaplığına karşı statik olarak bağlanırsa, sanırım "lpFileName tarafından belirtilen dizin", sürecin yolunun yoludur.

1

LoadLibrary ve CreateProcess işlevlerinin yardımlarına bakın. Bunlar, DLL'leri bulmak için kullanılan yolları ve bunları nasıl değiştirebileceğinizi açıklar.

0

İlk ardından currentDir görünüyor WinDir ve SystemDir ayrıca yolunda

+1

Bunun doğru olduğunu düşünmüyorum. Geçerli dizin, arama listesinde 5'dir. Listedeki ilk şey, genellikle geçerli dizin olmayan exe'nin bulunduğu klasördür. –