【发布时间】:2014-06-20 14:32:29
【问题描述】:
我已经使用 VS2013 创建了一个 C# winforms 应用程序,其中包括我也有代码的 C++ DLL。 这个应用程序在我的 win7 64 位机器上运行良好。 当我在同事的机器上运行它进行部署测试(相同的硬件,相同的操作系统,没有 VS2013)时,应用程序崩溃并说找不到 C++ DLL 或其依赖项之一。
当我在我的机器上运行dependency walker 时,它列出了与此线程中相同的缺失DLL: Win 7, 64 bit, dll problems
所以我按照那里提到的解决方案安装了 C++ Redistable Packages 2005、2008、2010、2012 和 2013,但没有成功。
所有项目都以 .NET 4.0 (x86) 为目标。 C++ 项目有很多外部引用,但仅限于 .NET DLL 和 C++ 头文件,后者大部分来自 c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include 我不需要部署头文件,是吗?
有人知道如何进行吗?
【问题讨论】:
-
C++ DLL 是发布还是调试版本?
-
调试版本,也是 C# exe
-
这可能是问题所在。当您下载 VC++ Redist 包时,它们可能不包含与您的 C++ DLLS 链接的调试版本。尝试使用 C++ DLL 的发布版本,看看是否可行,然后您就会知道这是问题所在。
-
另一种避免 DLL HELL 的方法是静态链接 stackoverflow.com/questions/2035287/…,其中列出了问题,但没有 DLL HELL。
-
您可以使用来自 (ilspy.net) 的 ilspy 来查看加载程序集/dll 的问题。