Вызовите SetDllDirectory
, указав дополнительные пути к DLL, прежде чем вызывать импортированную функцию в первый раз.
P / Invoke подпись:
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool SetDllDirectory(string lpPathName);
Чтобы задать более одного дополнительного пути поиска DLL, измените переменную среды PATH
, например ::
static void AddEnvironmentPaths(string[] paths)
{
string path = Environment.GetEnvironmentVariable("PATH") ?? string.Empty;
path += ";" + string.Join(";", paths);
Environment.SetEnvironmentVariable("PATH", path);
}
Более подробная информация о порядке поиска DLL здесь, в MSDN .
Обновлено 2013/07/30:
Обновленная версия вышеперечисленного с использованием Path.PathSeparator
:
static void AddEnvironmentPaths(IEnumerable<string> paths)
{
var path = new[] { Environment.GetEnvironmentVariable("PATH") ?? string.Empty };
string newPath = string.Join(Path.PathSeparator.ToString(), path.Concat(paths));
Environment.SetEnvironmentVariable("PATH", newPath);
}