编写C++;使用所需的所有LIB编程 当我用VisualStudio编译使用 OpenMP LIBS的C++代码时,程序是非常便携的——因为它运行在其他没有Windows的机器中。p> 当我用Eclipse CDT(Office和G+CygWin)编译C++代码时,一般来说,我需要在其他机器中安装正确的运行时库,以便运行程序。我觉得它不实用

编写C++;使用所需的所有LIB编程 当我用VisualStudio编译使用 OpenMP LIBS的C++代码时,程序是非常便携的——因为它运行在其他没有Windows的机器中。p> 当我用Eclipse CDT(Office和G+CygWin)编译C++代码时,一般来说,我需要在其他机器中安装正确的运行时库,以便运行程序。我觉得它不实用,c++,openmp,eclipse-cdt,C++,Openmp,Eclipse Cdt,基于此: 1) 编译代码(包括所有库(g++和openmp))以在另一个Windows系统中运行的正确方法是什么 2) 如何在Eclipse CDT for Windows中实现这一点 问题不在于编译,而在于分发。Windows和Windows工具链打算使用动态链接。现在,如果创建的软件依赖于特定版本的运行时(包括并行构建),那么只有安装了该构建,才能运行这些软件。可能存在多个相同库版本的构建,它们是使用并排(SxS)机制获取的 在Linux平台上,这个问题通过包管理器和依赖项来解决。在Wind

基于此:

1) 编译代码(包括所有库(g++和openmp))以在另一个Windows系统中运行的正确方法是什么


2) 如何在Eclipse CDT for Windows中实现这一点

问题不在于编译,而在于分发。Windows和Windows工具链打算使用动态链接。现在,如果创建的软件依赖于特定版本的运行时(包括并行构建),那么只有安装了该构建,才能运行这些软件。可能存在多个相同库版本的构建,它们是使用并排(SxS)机制获取的

在Linux平台上,这个问题通过包管理器和依赖项来解决。在Windows上,您必须创建一个安装程序,该安装程序将包含或能够下载正确版本的库。此外,安装程序还可以对操作系统设置进行适当的更改,并进行注册,以备将来回滚

请注意,运行时库具有无法分发的调试变体,并且软件的调试版本必须仅在开发人员系统上运行

“便携式”应用程序随处可见,无需安装即可运行,具有特殊状态,不依赖于SxS运行时库。据我所知,cygwin和mingw32允许创建这样的项目,mingw的64位项目在这方面存在问题。但它们仍然依赖于system.dll的特定版本,在不匹配的情况下可能会中断或出现故障

即使在这种情况下,您仍然需要一些.dll,来自mingw、cygwin、Qt,无论您使用什么以及哪些不是操作系统的一部分,将它们放在程序可以访问的地方。可以是包含可执行文件的文件夹。由于代码膨胀,静态链接成为台式机过去的一个噱头——动态库的大小很容易达到几十兆字节


最后:您不需要使用VisualStudio或EclipseCDT编译任何东西。它们都是为了使用各种编译器而设计的,都是juse环境。你必须指定正常;y、 您的IDE使用什么编译器,而不是您用来运行ot的IDE。

问题是大多数windows用户不会安装cygwin二进制文件。您可以在安装程序中打包这些内容。尽管这与旧windows操作系统上的Visual Studio 2015+应用程序相同。我在工作中生成的每个应用程序中都在安装程序中打包了相应的Visual Studio运行时。我认为区别在于静态链接和动态链接。这两个版本的尺寸有差异吗?您可以静态链接库。然后它被链接到您的可执行文件中,并且您的可执行文件包含它。或者你可以动态链接它。那么你的可执行文件会更小,但它需要库。我猜区别在于Windows 10在操作系统中有VS2015+的运行时。