.NET无法在同一目录中找到非托管DLL

时间:2018-07-13 13:35:08

标签: c# c++ .net windows dll

我有一个C ++ DLL库(我们将其称为unmanaged.dll),该库环绕在托管的.NET库中(我们将其称为managed.dll)。 managed.dll使用unmanaged.lib导入/链接unmanaged.dll。我还有一个使用managed.dll的ASP.NET Web API项目(我们称为项目webapi.dll)。现在,无论何时构建Web项目,在输出目录中我都会得到webapi.dllmanaged.dll。然后,我手动将unmanaged.dll复制到相同的输出文件夹中,以便(大概).NET可以找到并加载它。
但是,当我尝试运行webapi.dll时,它失败并显示错误,提示它无法加载managed.dll

  

无法加载文件或程序集“ managed.DLL”或其依赖项之一。找不到指定的模块。

这特别奇怪,因为unmanaged.dll位于同一文件夹中。
我感到很奇怪的是,如果我将unmanaged.dll放在C:\Windows\system32下,那么.NET可以正确地加载它!

我的问题是如何使.NET项目输出所在的文件夹中的unmanaged.dll对.NET可见?

1 个答案:

答案 0 :(得分:2)

是导致问题的IIS。遇到相同的问题,可以通过将dll添加到位于PATH变量中的文件夹中来解决它。