为什么需要Visual c++可重新发布包
Why is the Visual C++ Redistributable Package Required?
如果由可视化c++编译器编译的代码是直接的c++,为什么你需要一个可重新发布的包?这会使您的代码依赖于平台吗?使用visual c++编译器和可重新发布的包是否比使用另一个IDE和g++有任何优势?
代码不依赖于平台,结果可执行文件依赖于平台。它与标准库实现的MS库相链接,这些库作为DLL包含在可重新发布的文件中。
IIRC应该有一个静态链接所有内容的选项,这样您就不需要额外的可重新分发文件,但是生成的二进制文件仍然是平台相关的——例如,您不能在UNIX系统上运行windows二进制文件(至少没有WINE)。
不存在"直接c++ "这种东西。在代码中总是会有一些库函数需要调用,即使你非常小心地避免这样做,也会有一些函数需要由编译器发出的代码调用。例如,如果您有以下循环:
for( int i = 0; i < count; i++ )
array1[i] = array2[i];
编译器会将其替换为简单地复制内存的代码。如果你是为了更小的大小而不是速度而编译,这将是一个非常类似于memmove()的函数调用。
同样,你可能有一些浮点操作,它们没有直接的x86等效指令;这些也将通过函数调用来实现。这样的例子不胜枚举。
这不会使你的代码依赖于平台,因为在不同的平台上,该平台的编译器会编译与你相同的代码,以适应该平台的c++运行时。
幸运的是,c++运行时不必是与应用程序分开的实体。检查你的编译器和链接器选项;您应该能够生成包含两者的单个可执行文件。如果您发现g++不需要单独的运行时,那是因为它在默认情况下就是这样做的。
可重新发布的c++是特定于您正在使用的IDE("IDE"我说,但这真的是特定于编译器,但IDE &;随着事情的发展,编译器都被分配了新版本。)
它是特定于IDE的,而不是针对Win OS的。所以它应该是向后兼容的(显然,假设您没有使用新的api)。实际上,这样做是为了向后兼容(而不是像您所想的那样向后兼容)。这允许您使用最新的IDE版本(10,11,12…),并且仍然在Win2k上运行您的代码!
现在,当然,它与Linux有很大的不同,在Linux中,无论如何您都需要在每个主要版本上重新编译。大多数Unix系统都是这样工作的。
我不知道一种静态编译c++的方法,以便能够避免那些可重新分发的文件。这是可能的,虽然它肯定会使你的。exe非常大。
我总是在xp虚拟机上安装一个Visual c++ 6的副本(在win6/7/8中不能正常工作)。有时我编写或被要求编写一个实用程序,用于快速完成某事和/或一次性编译为单个exe。我厌倦了把一个只使用std库编写的简单程序发给别人,结果他们却告诉我因为缺少一些dll或可重新分发的包而无法工作。
在您的项目属性中,C/c++,代码生成将运行时库设置为/MT。
(感谢Mike Danes,他在社交网站上回答了这个问题。msdn: https://social.msdn.microsoft.com/forums/vstudio/en - us/09afd4be 7 - a15 - 4772 - 98 - c1 - a0464a96cd7f/how - -静态链接在visual c - express版- 2010 ?forum=vcgeneral&教授=要求)- 使用新行和不使用新行读取文件
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 遇到新行时,有没有办法停止istream_iterator
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- c++方法参数只能在linux的发布模式下自行更改
- 当一个新对象被分配到它的地址时,对象是否必须被销毁
- C++如何仅使用MOV在x86上实现发布和获取
- 模板元编程:如何将参数包组合成新的参数包
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 如何使用CLion在Mac上创建一个新的.txt文件
- 错误-我无法在VS2019中打开新的Qt项目
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 为什么新的随机库比std::rand()更好
- 如何使用 CZMQ-4.0.2 新 zsock API 创建发布/订阅架构?
- Visual Studio 2010,可以简单地包含一个新的类来触发发布构建错误
- c++新崩溃仅在发布版(MSVS10)
- opevcv-VideoWriter-如何在发布VideoWriter后附加新的图像
- C++标准的新版本已经发布了吗