当前位置:  开发笔记 > 编程语言 > 正文

运行没有运行时可再发行组件的C++二进制文件(Server2k3,XPSP3)

如何解决《运行没有运行时可再发行组件的C++二进制文件(Server2k3,XPSP3)》经验,为你挑选了2个好方法。

在Visual Studio 2008中编写了CGI应用程序并在本地对其进行了删除后,我将其上传到Windows Server 2003操作系统,并立即无法运行.

我猜我需要安装可怜的Runtime distributable,但在阅读之后:

http://kobyk.wordpress.com/2007/07/20/dynamically-linking-with-msvcrtdll-using-visual-c-2005/

我想知道忽略这个并排的东西是否更有意义,只是重新编写应用程序.

我猜Windows Server 2003没有我需要的MSCRVT版本?Windows Server 2003有吗?

在部署胖客户端时,我想用我的应用程序分发所需的dll.他们假设我只是包含iostream,sstream,string?

如果我添加windows.h,它会发生重大变化吗?

添加:

使用下面推荐的/ MT开关

C/C++ - >代码生成 - >运行时库 - >多线程(/ MT)

(你可能需要做一个干净的事情:

建立 - >清洁

为了避免错误信息

"无法将更新后的清单保存到文件中")

我的应用程序从38k膨胀到573k.这就是我所谓的重要(想象一下,如果这是你的薪水).由于这个应用程序的许多实例将不断加载和卸载(需要宝贵的内存和处理器资源),我想找到一个更好(更小)的解决方案.

我知道这对于今天的许多情况并不重要,而不是许多开发人员关注的焦点,因此趋势为.NOT和60MB运行时,但这就是我想要做的.

添加:

删除调试后,让项目编译:

项目 - > Propeties - > c/c ++ - >预处理器 - >预处理器定义(删除DEBUG;)

大小减少到300k,它将运行.

补充:正如下面Chris Becke建议的那样,复制:msvcm90.dll msvcp90.dll msvcr90.dll Microsoft.VC90.CRT.manifest到应用程序的目录将提供所需的所有运行时.

几次使用Visual Studio 6已被建议,但它不支持Vista(或我们假设的Windows 7)其他不需要运行时可分发的解决方案可能是MASM甚至是Basic的风格.不幸的是,这违背了使用像C++这样的高级OOP语言的目的.

只要我确实需要安装C++可再发行组件,那么权衡额外是260k.这是可以接受的



1> Roland Rabie..:

让我修改一下我的答案:

你有几个选择:

1)安装VC++ 2008运行时.您可以下载并安装它们.它们的合并模块也可用.

2)静态链接运行时(/ MT或C/C++ - >代码生成 - >运行时库:多线程).这将增加可执行文件的大小,但它不依赖于任何Dll.如果您担心大小,请仅使用C标准库或仅直接使用Windows API.

3)使用旧版本的VC++.2005及更早版本不需要安装运行时.Dll可以放在与可执行文件相同的目录中.如果使用VC++ 6.0,则运行时将安装在所有版本的Windows上,否则您需要自己安装.



2> Chris Becke..:

更全面的选项列表:

重写应用程序,以便根本不使用C/C++.

切换到Visual Studio 6或基于mingw的工具集,如Code :: Blocks - 这些工具使用已经分布的msvcrt.dll作为其运行时.

使用/ MT开关构建.这将在exe中构建必要的运行时函数.哪个会膨胀它.但是,这种膨胀(坦率地说)比加载单独的dll更少开销.

将VS9运行时分发为"私有sxs"安装.这需要将内容复制C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT到与应用程序的exe相同的文件夹中.如果您已应用SP1,则此文件夹将包含SP1运行时,但您的应用程序将要求RTM运行时(如图所示).添加_BIND_TO_CURRENT_CRT_VERSION到您的项目定义,重建和应该排序自己.

显然可以为VS9获取vc_redist.exe.找到或计算实际将上述程序集(作为Microsoft.VC90.CRT的内容)安装到共享sxs存储中所需的MSI或安装程序mojo.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有