在分布式应用程序中找不到DLL

时间:2011-09-29 20:48:28

标签: c# visual-studio-2010 dll distribution

我编写了一个非常简单的Windows窗体应用程序,它调用非托管DLL来执行程序完成的大部分实际计算。该程序在调试和发布模式下运行良好。它还可以正确安装并在开发计算机上运行。

当我尝试将其安装在目标计算机上时(运行相同的操作系统:64位Windows 7),会出现问题。尽管DLL与.exe文件位于同一目录中,但我得到的是“未找到DLL的异常”。当我尝试OneClick发布以及使用.msi安装文件时,我收到此异常。该错误甚至会引用文件的位置,同时说明无法找到该文件。

我的某个安装程序设置是否不正确?我不在适当的地方包含DLL或引用?任何帮助或建议将不胜感激。

感谢。

3 个答案:

答案 0 :(得分:4)

您部署的DLL可能具有尚未部署的其他依赖项。如果那些依赖关系不存在,那么你通常会遇到这种类型的错误。

<强>更新

MSVCR100D中的“D”表示它是库的调试版本。这很可能不在目标系统上,许可会阻止您部署它。

您需要在发布模式下进行完全重新编译。一旦完成,你的DLL 应该目标MSVCR100(注意缺少“D”)。如果没有,那么你可能有一个该程序集的调试版本。找到发布版本并链接到该版本。

答案 1 :(得分:0)

如果您通过调用CreateObject调用非托管代码,那么请确保您已在目标计算机上注册了非托管DLL。

答案 2 :(得分:0)

在一篇关于Microsoft发现类似'dll not found'错误的帖子中:http://support.microsoft.com/kb/319114您可以根据以下事实了解如何修复此问题:1)丢失或损坏的dll文件(也here)2)注册路径,它以某种方式调用该dll可能错误/丢失/损坏。否则,您可能需要验证新的病毒/恶意软件是否存在......