在windows上编译MSVC是严格必要的吗?
Is MSVC strictly necessary to compile on windows?
一些开源项目明确声明,为了在windows上编译,它们需要一个microsoft编译器(通常也是一个特定的版本,因为后面的版本不兼容或将拒绝编译旧代码)。
因为这对我来说似乎很荒谬,因为有自由/开源编译器可以为windows编译,一个微软编译器对于任何基本任务都是必要的,我假设这是因为这些项目使用api调用库(如msvcrt*.dll),由于某种原因,mingw-gcc, clang和其他端口的windows编译器无法编译。
我对这些要求的理解很肤浅,因为我编译代码的经验主要来自linux,这让我很担心,因为得到一个微软编译器是很重要的。获得它们的唯一方法是通过微软visual c++的express版本,即使这样,最新的版本也会完全拒绝安装在像我这样的旧winxp机器上,目前唯一可用的版本是vc++express2010,它需要注册才能从试用软件变成免费软件(即使这样我也不清楚这是否有效,或者它需要什么-也许操作系统挂钩"调试"和其他干扰?)
1)我的问题是,这些项目是否依赖于微软编译器,因为构建这些微软专用库(显然是自由/开源编译器不能做的)?
如果原因是构建脚本或预处理器指令,这似乎是荒谬的,因为它们可以相对容易地移植。
2)此外,是否有可能,即使我避免任何msvcrt/.net/etc。调用,我仍然可以发现自己需要一个微软编译器来编译本地Windows软件(假设没有使用执行这些调用的库)?
3)我可以简单地使用clang和一些widget库来制作本机windows软件吗?
4)我可以修改一个项目的源代码,使它不依赖于微软编译器吗?
1)我的问题是,这些项目是否依赖于微软的编译器针对这些微软独有的库进行构建(显然自由/开源编译器不能做的事)?
编译器供应商和GUI框架供应商可以提供执行类似于MS dll的dll。一些MS dll是system dll,被其他编译器和框架供应商使用。
如果您正在使用编译器或框架特定的dll,它们需要伴随您的程序(项目)的安装。
2)此外,是否有可能,即使我避免任何msvcrt/.net/etc。调用,我仍然可以发现自己需要一个微软编译器来编译原生Windows软件(假设没有使用这样的库)执行这些呼叫)?
。如果你浏览StackOverflow上的帖子,有很多人直接使用Windows API,我猜你称之为原生的Windows软件。通常,这些API的代码位于系统API中。编译器将函数调用转换为对这些dll的调用,必要时加载它们。
3)我可以简单地使用clang和一些小部件库来使本机Windows软件也可以吗?
不,你不能。这就是它们存在的原因。同样,许多人使用Qt和xWidgets这样的框架而不使用MS编译器。我做了一段时间。我转而使用Visual Studio,主要是为了调试器。我不喜欢其他ide使用GDB的方式。否则,我不会使用MS,因为他们倾向于使用微软标准语言,而不是ISO。
4)我可以修改一个项目的源代码,使它不依赖于微软编译器吗?
不,这就是为什么有免费软件和其他编译器在那里。
嗯,我们可以用Java创建不使用MS编译器的gui,但是它们使用Windows API。
尝试安装Cygwin。当您查看所有库时,您将意识到可以创建不使用MS编译器的项目。再一次,通读StackOverflow的帖子,你会发现人们正在使用其他编译器,如Intel、GNU、Clang、Greenhills等。一些嵌入式系统的编译器也可以编译Windows操作系统,所以你可以编写在两个平台上都工作的代码。
看起来你需要在网上搜索"GNU GUI教程c++",看看弹出什么。另外,搜索"wxWidgets"answers"Qt"查找其他框架
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux for Windows上编译C++代码时出错
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 升级到 Windows 10 版本 1809 SDK 后,我无法编译使用 C++/WinRT 的项目
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- Eclipse 没有在 Windows (C++) 中编译.exe
- 尝试在Windows上执行C++时出错(通过MinGW编译)
- 编译的C可执行文件被Windows defender检测为病毒
- gcc:"在Windows上编译时找不到-lasound"
- 坚持编译QDoc以在Windows上构建qt5
- MSYS2 MinGW64 在 Windows 上构建 GMP/MPFR 作为静态库,并将它们链接到使用 CL 编译的
- SFML 交叉编译 for Windows on Linux.
- 使用 MinGW 在 Windows 上的命令行编译C++文件
- 如何使用 openmp 编译 c++?(在 Windows 10 中使用 G++)
- 如何使用Visual Studio为windows编译GMP
- 在 Linux 上为 Windows 编译多线程应用程序 [ C++ ]
- Rcpp Windows 编译失败
- 从 Windows 编译 OSX 的C++
- 从 Linux 上的 Windows 编译 OpenGL 应用程序
- 如何为64位Windows编译WSO2 Web服务框架- c++ ?