C# System.DllNotFoundException:无法在Windows 2003上加载DLL 我在C项目中使用C++ DLL,它在我的Window XP机器上运行良好,但是当我在Window 2003 Server X64上复制我的调试项目时,我收到了下面的错误,有人能告诉我这个问题是什么,我如何修复它?

C# System.DllNotFoundException:无法在Windows 2003上加载DLL 我在C项目中使用C++ DLL,它在我的Window XP机器上运行良好,但是当我在Window 2003 Server X64上复制我的调试项目时,我收到了下面的错误,有人能告诉我这个问题是什么,我如何修复它?,c#,dll,dllnotfoundexception,C#,Dll,Dllnotfoundexception,谢谢 System.DllNotFoundException:无法加载DLL“lib.DLL”:由于应用程序配置不正确,此应用程序无法启动。重新安装应用程序可能会解决此问题对于DLL加载问题,我建议您使用此工具。事实证明,它在处理此类问题时很有价值,因为它将向您展示确切的问题 如果您拥有Visual Studio 2005,可以在C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\Dependes.exe中找到它 更新: M

谢谢


System.DllNotFoundException:无法加载DLL“lib.DLL”:由于应用程序配置不正确,此应用程序无法启动。重新安装应用程序可能会解决此问题

对于DLL加载问题,我建议您使用此工具。事实证明,它在处理此类问题时很有价值,因为它将向您展示确切的问题

如果您拥有Visual Studio 2005,可以在C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\Dependes.exe中找到它

更新:


MVCR90DLDLL是VisualC++运行时9的调试版本。它只能用于调试目的。我强烈建议您构建库的发布版本,以避免DLL加载问题。但是,如果您确实需要部署调试版本,您将在C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\debug\u NonRest\x86中找到所有必需的DLL。

它抱怨在查找CRT DLL时遇到问题。首先检查DLL是否包含所需的清单。在Visual Studio中,File+Open+File,选择DLL并验证它是否包含RT_清单节点。下一个问题是无法部署DLL的调试版本。它将依赖于CRT的调试版本,您无法在目标计算机上安装该版本


部署DLL的发布版本或使用/MT选项编译DLL,以便CRT静态链接。项目+属性,C/C++,代码生成,运行库。如果DLL是用/CLR选项编译的,这将不起作用。

< P>听起来好像你没有在目标机器上安装VisualC++运行时。您可以从安装,因为它似乎正在使用这些DLL的调试版本。也许您还需要先在发布模式下构建应用程序?还有一些其他建议可能会有所帮助……

lib.dll是32位dll吗?您的C程序将在x64本机上运行,但无法加载32位DLL。您可以尝试将C项目的目标CPU更改为x86,以强制它在WOW64下运行。

我发现当操作系统需要更新时,某些dll-s被冻结。 只需检查挂起的更新,安装它们和/或重新启动Windows即可


之后,冻结的dll-s被释放,问题消失。

应用程序目录中是否存在lib.dll?是的,但错误仍然出现。.有人知道如何修复吗。.我感到非常沮丧。.lib.dll也是在调试中构建的吗?如果VisualStudio没有安装在Windows 2003机器上,它可能试图链接调试的C++运行时。@ SHIF301:好的想法,它已经咬了我很多次:我没有LIB。DLL的源代码……我的项目复制LIB DLL调试文件夹,当我点击调试。谢谢!你的回答在很大程度上帮助了我。依赖沃克找到了问题的根源,这就是问题的症结所在。我已经在unity3d为这个问题挣扎了一周了。