我们的C#/ .NET程序在目标文件夹中调用第三方DLL(x.dll)。 x.dll然后在同一文件夹中调用另一个第三方DLL y.dll。在某些系统中,这不起作用,因为x.dll无法找到y.dll。 具有相同dll的相同程序适用于大多数其他系统,但是如果它不起作用,我们无法找出系统的差异。我们检查了属性,Windows没有阻止dll。病毒扫描程序也被禁用了。
答案 0 :(得分:1)
请浏览Dynamic-Link Library Search Order并查看适用的情况。最可能的情况是启用了SafeDllSearchMode的标准DLL搜索顺序:
如果启用了SafeDllSearchMode,则搜索顺序如下:
- 加载应用程序的目录。
- 系统目录。使用GetSystemDirectory函数获取此目录的路径。
- 16位系统目录。没有函数可以获取此目录的路径,但会搜索它。
- Windows目录。使用GetWindowsDirectory函数获取此目录的路径。
- 当前目录。
- PATH环境变量中列出的目录。请注意,这不包括指定的每个应用程序路径 App Paths注册表项。时,不使用App Paths键 计算DLL搜索路径。
请注意,如果DLL是托管程序集(您没有提及它),则.Net程序集搜索规则适用,请参阅How the Runtime Locates Assemblies。显然,GAC也会对托管DLL起作用。
我只是给你指点进行自己的调查,因为你的帖子缺少相关信息。