我有一个.Net应用程序,它依赖于一个名为Procarper.dll的非托管DLL。当我在我的个人计算机上运行它时,应用程序运行完全正常。
当我将此相同的应用程序复制到我的服务器(Windows 2008)并尝试在那里运行它失败,并显示以下错误消息。
我正在使用实际应用程序进行测试的原因是因为我的WCF服务最初失败了。
System.DllNotFoundException:无法加载DLL'C:\ Warper \ Procarper.dll':找不到指定的模块。 (来自HRESULT的异常:0x8007007E)
PInvoke签名看起来像这样(我将路径硬编码为测试......它通常只是相对的):
[DllImport(@"C:\Warper\Procarper.dll", EntryPoint = "CreateProcr", CallingConvention = CallingConvention.Cdecl)]
private static extern int CreateProcr(int width, int height, int scanWidth, int bpp, IntPtr rawData);
我正在看看依赖行者,但老实说,我不知道如何真正判断它是什么告诉我,因为我必须使用C ++已经很长时间了。
根据以上信息,任何人都可以帮我确定失败的原因吗?
我很乐意提供更多信息,请询问,我会提供。
所以,如果有人碰到类似的东西,希望我的经验可以帮助你。
这就是我解决问题的方法。 (提示:在给你问题的机器上安装DependencyWalker并使用.dll你遇到问题.DependencyWalker将显示缺少的依赖关系或目标CPU不匹配的红色)。
MSVCP120D.DLL和MSVCR120D.DLL
难以置信的。现在我知道他们为什么称它为“.dll hell”。
希望这有助于某人。