运行程序需要哪些C ++包?

时间:2011-04-13 20:45:06

标签: c# c++ packages

我创建了一个使用C ++ DLL的C#应用​​程序,我试图创建一个安装包,允许它在其他计算机上运行,​​无论它们是否有VS,问题是我不知道我需要什么样的C ++库让它做到这一点。当我在空白虚拟机上运行应用程序时,它说 “xxxx遇到了问题,需要关闭。” 如果我去下载visual studio 2008 express版本并将其安装在机器上,我的程序运行正常。问题是快速下载85-185mb和335mb高达1.1gb安装在一台机器上,使用它的程序只有33kb。巨大的开销...... 如果我只安装来自msdn网站的C ++可再发行组件,它需要4mb,但它不会让我运行我的程序。

我需要使用C ++的哪些软件包让这个程序在一台空白的计算机上运行?

3 个答案:

答案 0 :(得分:1)

这个问题很难回答。如果你有c ++ dll的源代码,你应该能够看到它的依赖项,除非这个人使用了很多com或加载库调用。我用来获取c ++依赖信息的最佳工具之一是depends.exe。有一件事要检查你的代码是不是你没有使用调试版本的调试版本,我认为它不在可再发行组件中。

答案 1 :(得分:0)

caleb,我建议你一个名为Dependency Walker的程序。它将显示您拥有的所有dll依赖项。我确信它们中有更多用于Windows,但这是我已经使用了很长一段时间而且我喜欢它。所以你通过从MS网站下载可再发行软件包来做对了,但你的应用程序可能依赖于其他一些库。当我在很久以前尝试使用Visual Studio构建我的安装程序时,我记得这是一种在安装程序中包含可再发行软件包或使用并行安装的方法 - 这取决于Visual Studio版本的许可协议是否允许您执行此操作是不是。您还可以包含安装程序中的所有dll依赖项。

希望有所帮助

答案 2 :(得分:0)

您需要的C ++运行时dll是随编译器一起提供的可再发行软件包而且恰好是这个!由于可执行文件中嵌入了需要精确版本的清单(由并排汇编目录C:\ Windows \ SxS中的二进制文件的哈希值检查),因此其他redist包不一定有效。

所以你使用可再发行组件是正确的,但你需要使用编译器安装的那个,而不是来自互联网的最佳猜测。可以在清单文件(XML)中查看确切的版本