有没有办法为使用DllImport导入的给定程序集指定要搜索的路径?
[DllImport("MyDll.dll")]
static extern void Func();
这将在应用程序目录和PATH环境变量中搜索dll。但有时dll会被放在别处。是否可以在app.config或清单文件中指定此信息,以避免动态加载和动态调用?
发布于 2012-05-29 21:35:05
在第一次调用导入的函数之前,请尝试使用附加的DLL路径调用AddDllDirectory
。
如果你的Windows版本低于8,你将需要安装this patch,它为Windows7、2008 R2、2008和Vista扩展了缺少的AddDllDirectory
函数(尽管XP没有补丁)。
发布于 2017-07-29 10:55:38
这可能是有用的DefaultDllImportSearchPathsAttribute Class
例如。
[assembly: DefaultDllImportSearchPaths(DllImportSearchPath.UserDirectories)]
还要注意,你也可以使用AddDllDirectory,这样你就不会搞砸任何已经存在的东西:
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool AddDllDirectory(string path);
https://stackoverflow.com/questions/2864673
复制相似问题