2011-11-15 4 views
0
<DllImport("XYZ.dll")> 

上記のFeeEngineDll.dllのデフォルトパスは誰に教えてもらえますか?<DllImport( "XYZdll")>のDllのデフォルトパス>

+1

おそらくのAppDomainまたはグローバルアセンブリキャッシュのパスのいずれか、次のようになります。現在のシステム上の既知のDLLのリストについては、次のレジストリキーを参照してください。まずそれらを試してみてください。 (AppDomain.CurrentDomain.BaseDirectory) – albertjan

+0

http://msdn.microsoft.com/en-us/windows/ms682586 –

+0

ここであなたの質問へのより完全な答えだ: http://stackoverflow.com/a/26710419/3914921 –

答えて

1

DllImport属性を使用している場合は、完全パスまたは相対パスを指定できます。パスを指定しない場合は、DLLが他の手段でロードされている場合を除き、DLLは実行時に現在のパス(アプリケーション作業ディレクトリとPATH環境変数で指定されたすべてのパス)になければなりません。 DLLがSetDllDirectory機能を介して現在のディレクトリに配置されていない場合、DLLを見つけるようにWindowsを説得することができます。

も参照してください:DLLが検索前Dynamic-Link Library Search Order

0

、同じモジュール名を持つDLLが既にメモリにロードされている場合、それは次のよう

C:\Windows\SysWOW64 
C:\Windows\System32 
  • をチェックし、システムはロードされたDLLを使用しますが、DLLはどのディレクトリにあっても使用されます。システムはDLLを検索しません。

  • DLLが、アプリケーションが実行されているWindowsのバージョンの既知のDLLのリストにある場合、システムは既知のDLL(および既知のDLLの依存DLLがある場合)のコピーを使用します。システムはDLLを検索しません。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs 
    
関連する問題

 関連する問題