我希望学习C++,以便在各种平台(主要是Linux和Windows)上工作。我发现了一些解决方案,如Boost C++库、Qt工具包等,可以用来编写能够在这两个平台上编译的程序。
我想向社区了解,你们会推荐使用哪种类型的库,如果有人有多平台编程的经验,请分享一下。
我希望学习C++,以便在各种平台(主要是Linux和Windows)上工作。我发现了一些解决方案,如Boost C++库、Qt工具包等,可以用来编写能够在这两个平台上编译的程序。
我想向社区了解,你们会推荐使用哪种类型的库,如果有人有多平台编程的经验,请分享一下。
使用 Qt 和 BOOST C++ 库。它们都是免费的且非常高质量。并且,至少对我来说,我发现 Qt 比 wxWidgets 更加直观、易于学习和简单。
如果你需要进行任何GUI工作,我强烈推荐Qt;即使你不需要GUI,因为它还有经过深思熟虑的网络/数据库/容器等API,也非常有用。它是一个设计非常好的API,非常易于使用。
标准 C++ 程序将被编译并且可移植,也就是说可以在大范围的平台上运行。为了确保代码整洁,最好获得几个不同的编译器,并检查所有编译器的代码,同时强制执行完全符合标准(例如使用 -std=
选项来编译 g++
),写出无警告的代码(例如使用 -W -Wall -Werror
选项来编译 g++
,它会发出错误而不是警告)。编译器的选择完全由您决定,但如果您主要是学习,我建议使用:
g++
(免费、开源)此外,如果您确实必须在项目中使用编译器或目标特定的代码,请确保将其抽象化,以便将所有代码聚集到一个地方,并隐藏起来,不让其影响其他代码。
现在,如果你想使用STL以外的更多东西,那么你需要考虑编译器和平台的范围来选择你的库(如果文档没有说明,这是一个不好的预兆)。详细的选择取决于你想要做什么,但Boost(作为一个强大、广泛应用于许多常见问题的库)和Qt(最新版本;用于GUI编程)是不错的选择。对于数值科学编程,BLAS/LAPACK(和/或它们的并行版本BLACS和Scalapack)被广泛使用,可以直接使用它们,也可以通过C++包装类(如Boost中的BLAS)间接使用;一个好的FFT库也经常是必需的(如果其GPL许可证对你不是一个负担,则FFTW很好)。