我有一个32位应用程序,该应用程序使用由他人构建的DLL,我们将其称为xyz.dll。此DLL依赖于其他几个旧DLL。所有dll都保存在我的应用程序所在的文件夹中。我的应用程序编译正常,但是在运行时,它引发错误“无法加载文件或程序集“ xyz.dll”或其依赖项。这不是有效的Win32应用程序”
我有2个变通办法似乎可以解决此问题。在第一个中,我将DLL移动到单独的文件夹中,并创建了一个批处理文件来运行该应用程序。批处理文件首先将dll的路径添加到环境,然后调用该应用程序。有趣的是,如果我将dll与应用程序放在同一文件夹中,然后将其添加到路径中,将无法正常工作。
第二种方式也将dll移动到了文件夹,并将此路径添加到用户环境变量并直接运行exe。这些解决方案之一都需要额外的步骤,这对于应用程序部署而言并不理想。我想知道是否有更好的方法?
答案 0 :(得分:1)
当您的dll与应用程序位于同一文件夹中时,就是该应用程序尝试加载的dll,但失败了,如您所说。
当您将dll移到另一个文件夹并将该文件夹的路径名添加到PATH环境变量中时,该应用程序将起作用。在这种情况下,应用程序不会尝试加载已移动到另一个文件夹的dll。如果是这种情况,它将失败。它必须加载PATH环境变量中的一个文件夹路径中的dll的另一个版本。
只需使用Windows搜索在计算机上查找dll文件的所有副本。您将能够确定其他dll在哪里。