繁体   English   中英

我需要什么C ++程序包才能运行程序?

[英]What C++ packages do i need to run a program?

我创建了一个使用C ++ dll的C#应用​​程序,并尝试创建一个安装包,该安装包将使其在具有VS或不具有VS的其他计算机上运行,​​问题是我不知道我需要让什么C ++库运行做这个。 当我仅在空白虚拟机上运行该应用程序时,它会显示“ xxxx遇到问题,需要关闭”。 如果我去下载Visual Studio 2008 Express版本并将其安装在计算机上,则我的程序可以正常运行。 问题是在机器上下载的是85-185mb的下载,最大为1.1gb的是335mb,正在使用它的程序只有33kb。 那里的开销很大...如果我只安装从msdn站点可再发行的C ++,它将占用4mb,但是它不会让我运行我的程序。

我需要什么C ++软件包才能使此程序在空白计算机上运行?

这个问题很难回答。 如果您拥有c ++ dll的源代码,则除非该人员使用了大量com或加载库调用,否则您应该能够查看其依赖关系。 我用来获取c ++火山喷发信息的最佳工具之一是depends.exe 要检查其代码是否是您要使用的调试版本是否与依赖于我认为不在可再发行版本中的调试dll相关的一件事。

caleb,我建议您使用一个名为Dependency Walker的程序。 它将显示您具有的所有dll依赖项。 我敢肯定,其中有很多Windows版本,但这就是我已经使用了一段时间了,我喜欢它。 因此,您通过从MS网站下载可再发行软件包进行了正确的操作,但您的应用程序可能依赖于某些其他库。 很久以前,当我尝试使用Visual Studio来构建安装程序时,我记得这是在安装程序中包含可重新分发程序包或使用并行安装的一种方法-这取决于您的Visual Studio版本的许可协议是否允许您执行那还是不。 另外,您可以包括安装程序中所有的dll依赖项。

希望能有所帮助

您需要的C ++运行时dll是与编译器一起作为可再发行软件包提供的dll,而正是这个软件包! 其他Redist软件包将不需要工作,因为嵌入在可执行文件中的清单需要精确的版本(由并排汇编目录C:\\ Windows \\ SxS中的二进制文件的哈希值检查)

因此,您可以正确使用可再发行组件,但是您需要的是随编译器一起安装的组件,而不是互联网上的最佳猜测。 确切的版本可以在清单文件(XML)中查看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM