2011-04-13 87 views
0

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

从C++什么包做我需要做一个空白计算机上安装此程序运行?

+0

我有依赖学步车,每次我运行它时,它指定一个新的DLL我失踪。到目前为止其上市的MSVCRT.dll MPR.dll和IESHIMS.dll。 IESHIMS是IE8的dll和我的程序犯规使用它,为什么它取决于它我不知道编辑:和WER.dll – caleb 2011-04-13 21:00:15

+0

问题是DLL在调试模式:|在发行版中重建它,并为其提供所有库,现在它运行 – caleb 2011-04-13 21:38:15

回答

1

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

+0

我有dll源代码及其运行调试模式。如果我在发布模式下构建它,那么即使它们位于相同的目录中,也找不到它的任何库或.h文件。 – caleb 2011-04-13 21:18:28

0

迦勒,我建议你一个名为Dependency Walker程序。它会显示你所有的dll依赖关系。我确定Windows中有更多它们,但这是我一直使用的一段时间,我喜欢它。所以你从MS网站上下载了可再发行组件包,但你的应用程序可能依赖于其他一些库。当我很久以前使用Visual Studio试图构建我的安装程序时,我记得它是在安装程序中包含可再发行组件包或使用并行安装的一种方式 - 取决于您的Visual Studio版本的许可协议是否允许您执行那还是不是。你也可以包含你在安装程序中的所有dll依赖关系。

希望帮助

+0

我有依赖项步行者,每次运行它时,它都会指定我缺少的新dll。到目前为止其上市的MSVCRT.dll MPR.dll和IESHIMS.dll。 IESHIMS是一个IE8 DLL,我的程序不使用它,所以为什么它依赖于它我不知道编辑:和WER.dll – caleb 2011-04-13 20:56:07

+0

因为有时*其他* dll取决于你可能不直接使用的那个。例如,有时我发现OpenGL库依赖性,而我根本没有使用它。 Dependency Walker可以显示dll的依赖关系,而依赖关系则依赖于您的应用程序。当你无意中将你的应用与一个你并没有真正使用的库联系起来时,可能会出现这种情况,例如一个为你创建项目的向导就放在那里。 – Barbaris 2011-04-13 21:14:49

0

你需要的是编译器提供的再发行组件包,准确地这一个的那些C++运行时的DLL!其他的redist软件包不需要工作,因为嵌入在需要精确版本的可执行文件中的清单(通过并排汇编目录C:\ Windows \ SxS中的二进制文件的散列值进行检查)

因此,您对于可再发行组件是正确的,但你需要一个与编译器一起安装的,而不是来自互联网的最佳猜测。确切的版本可以在清单文件(XML)来看待

相关问题