C++ 需要运行时吗?

发布于 2024-07-16 02:01:19 字数 69 浏览 1 评论 0原文

为什么有些 C++ 项目需要安装运行时包,而另一些则不需要?

编辑:如何使项目在没有运行时的情况下工作?

Why do some C++ projects require a runtime package to be installed, while others do not?

EDIT:How to make a project to work without the runtime?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

—━☆沉默づ 2024-07-23 02:01:19

有些是静态链接的,而另一些则依赖于在运行时加载的动态库。 要静态链接您自己的项目,您需要更改项目配置 - 如何执行此操作取决于您正在使用的编译器/链接器和/或 IDE。

Some will have been statically linked, while others will depend on a dynamic library, loaded at run-time. To link your own project statically, you need to change your project configuration - how you do this depends on the compiler/linker and/or IDE you are using.

浮生未歇 2024-07-23 02:01:19

一些应用程序是通过与系统库链接而构建的,这就是动态链接程序
其他程序将库代码包含到可执行文件中,这是静态链接程序

动态链接的优点:

  • 可执行程序的尺寸较小。
  • 如果共享动态链接库,则内存消耗更少。
  • 更好的性能。

动态链接的缺点:

  • 对库的依赖性。
  • 部署难度更大。

静态链接的优点:

  • 没有依赖关系。
  • 更轻松地部署应用程序。

静态链接的缺点:

  • 可执行文件较大。

要获取静态项目,您需要在项目属性中设置该选项。

Some applications are built linking with the system libraries this are the dynamic linked programs.
Other programs contains the code of the libraries into the executable file this are the static linked programs.

Pros of dynamic linked:

  • Smaller size of the program executable.
  • Less memory consumption if the dynamically linked library is shared.
  • Better performance.

Cons of dynamic linked:

  • Dependency on the library.
  • Deployment is more dificult.

Pros of static linked:

  • No dependencies.
  • Easier deployment of the application.

Cons of static linked:

  • The executable file is bigger.

To get a static project you need to set up the option in the project properties.

╭ゆ眷念 2024-07-23 02:01:19

我认为这是指VS2005 service pack 1运行时。 由于某种原因,MS 添加了一些非向后兼容的功能,因此任何使用 VS2005sp1 构建的应用程序都需要运行时。

I think this refers to the VS2005 service pack 1 runtime. For some reason MS added some non-backward compatible features to it, so any app built with VS2005sp1 requires the runtime to go with it.

束缚m 2024-07-23 02:01:19

如果您使用作为 DLL(而不是静态库)链接的标准 C/C++ 库,则需要安装运行时包。 因此,避免这种情况的一种方法是静态链接标准 C/C++ 库(C++ 项目设置)。 对于您的情况来说,这可能是可能的,也可能是不可能的。

如果没有,您可以使用 Visual Studio 发行版中的 dependency walker 工具来识别应用程序所需的 DLL,并将它们放在可执行文件附近。

您应该注意的是,在 Visual Studio 2005 及更高版本中,二进制文件的清单可能(并且可能会:)让您的生活变得更加困难。 特别是自从 Visual Studio 2005 SP1 更改了 C++ 库的版本以及清单以来。

You need to have runtime package installed in case you are working with standard C/C++ library linked as DLL, and not as static library. So one way to avoid it is to link standard C/C++ library statically (C++ project settings). It may, or may not be possible in your case.

If not, you can use dependency walker tool from Visual Studio distribution to identify the DLLs needed by your application and just put them near your executable.

What you should be aware in Visual Studio 2005 and later is that there are the manifests for binaries can (and probably will :) make your life harder. Specially since SP1 for Visual Studio 2005 changes the version of C++ library, and the manifests as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文