从Visual C++移植到Linux
Porting from Visual C++ to Linux
我对此有点陌生,所以如果这没有意义/是一个愚蠢的问题,请道歉!!
无论如何,我正在创建一个必须使用OpenCV和UDP套接字的项目。我目前正在Visual Studio(2013)中编写C++部分,因此该项目是Visual C++。计划最终是将该项目从PC转移到运行linux发行版的嵌入式计算机上。
我想知道,如果我在Visual Studio上开发整个C++代码,然后尝试移植到linux环境,以后是否会有什么重大问题让我头疼?
如果是这样的话,是否有一种方法可以通过更改IDE或其他方式来避免这些未来的问题??
如果您的GUI使用MFC,那么有一天您可以告别将代码移植到Linux的任何可能性。
如果您只将visualstudio用作IDE,并使用可移植的第三方库(Qt、boost…),那么您应该能够顺利地移植代码。
实现这一目标的一个好方法是:
- 将所有文件名都用小写
- 避免使用任何win32 API(首选boost库)
- 如上所述,不要在文件路径中使用\,/几乎总是适用于所有平台
- 编写一些Cmake脚本来生成vcproj和sln文件
- 。。。它并不是详尽无遗的
如果这在PC上有效,那么您可以使用Cmake生成Linux Makefile,它有望在Linux下编译和运行。
理想情况下,要运行大量的单元测试,因为移植可能会引入多个小错误,您将很难找到这些错误。
您可以使用多平台编译器,如MINGW(http://www.mingw.org/)最终使用代码块(http://www.codeblocks.org/)或Netbeans以防止兼容性问题。编写的代码应该是高度兼容的。但是使用VisualC++编译器,在Linux上编译程序可能会更复杂,因为该编译器仅在Windows上运行。
我最近将一个Visual C++项目转移到了Linux发行版,没有遇到重大问题。最大的问题是我不得不把all改成/。如果您有疑问,您可以始终使用多平台编译器。
有一个项目可以在Windows上使用Visual Studio进行编译,也可以在Linux上进行编译。我有两个这样的项目。它们可以在https://svn.sullivanandkey.com/SnKOpen/cpp/now/trunk/和https://svn.sullivanandkey.com/SnKOpen/cpp/yekneb/trunk/.
这两个项目都不使用GUI,但是如果您使用诸如wxWidgets、FLTK或Qt之类的跨平台GUI库,则是可能的。
我的YekNeb项目在以下操作系统上编译:FreeBSD、GNU/Linux、Microsoft Windows、Solaris和ReactOS。
关键是要将自己限制在您希望针对的所有平台上可用的API中。如果您使用任何第三方库,如OpenCV,请确保它们在您希望使用的每个平台上都得到支持。
有时,您需要使用行为不同的代码,这取决于给定函数在给定平台上是否可用。我建议不要使用我在上面提到的两个项目中使用的技术来做到这一点。我将很快过渡到CMake,并利用CMake:How to Write Platform Checks中的配置功能。
我希望这能有所帮助。
- 找不到Linux Visual Studio代码C++文件
- 在Visual Studio中将Windows解决方案移植到Linux
- 无法在clang Linux中分配非静态成员函数,但我可以在Visual Studio Windows中分配
- 从 Visual Studio 2017 指定 Linux 的外部库
- 无法将 Google Test NuGet 包添加到 Visual Studio Linux C++ 项目中
- 我可以在Windows(Visual C++)中读取bin文件,但不能在linux(GCC)上读取bin文件
- 如何在 Linux 中运行 Visual Studio 2015 托管 c++ 测试函数?
- 如何在Visual Studio c++ for Linux平台中编写GTK应用程序
- 如何在Visual Studio中添加Linux编译到Cmake Project
- 在 Linux 上从 Visual Studio Code 调试 Python C++ 扩展
- 在 Linux 上的 Visual Studio 中链接两个项目
- 将 PHP-CPP 库链接到 Visual Studio 2017 中的 Linux 项目
- Visual Studio 2017 Linux 远程构建 - 在每个构建中重新编译所有 cpp 文件
- Visual Studio 2017问题编译了C 代码,而该代码则在Linux中编译
- 正在从Visual Studio 2017创建Linux共享库
- 调试基于 Linux 的 C++ 代码 Visual Studio 代码时出现问题
- 如何在 Linux 上高效地编译 Visual Studio c++ 项目
- Visual Studio Linux跨平台的Cmake Generator
- Visual Studio 2017远程构建Linux具有Boost
- 使用 Visual Studio Code 在 Linux 中创建和编译"hello world"应用程序