在linux下编译Visual C++代码?

use*_*142 1 linux gcc opencv cmake visual-c++

我有一个执行图像匹配的 Visual C++ 程序。我正在使用 openCV。我希望在 Linux 服务器上运行 exe。但我不知道如何在linux下编译Visual C++代码?

任何人都可以在这方面帮助我吗?。。

Dev*_*lar 5

如果您在 MSVC 中编写 C++ 代码时做得很聪明,那么您从一开始就将所有依赖于平台的代码(即 Microsoft 对 C++ 的扩展和仅限 Windows 的库的使用)与其余代码隔离开来,并且确切地知道在哪里执行该操作。修改使其也可以在 Linux 上运行。

不幸的是,你的问题暗示这是你第一次尝试跨平台编码,在这种情况下,你的代码中可能到处都是微软主义,并且必须逐一挑选它们。启动编译器,查看其错误消息,然后从那里开始。祝你好运,这将是一个痛苦,但对你的下一个项目来说也是一个非常有价值的教训。

(我并不是在这里指责 MSVC。对于那些用 GNU 主义乱扔代码然后想要在 MSVC 上编译的人来说也是如此……)

通常的构造如下所示:

#if defined( _MSC_VER )
// Microsoft version
#elif defined( __GNUC__ )
// GCC version
#else
#error Platform / compiler not supported.
#endif
Run Code Online (Sandbox Code Playgroud)

编辑:如果它不明显,我们的想法是将上面的 ifdef'ed 代码保持在绝对最小值。使用 typedef、转发函数(即 log() 使用 Unix 或 Windows 日志记录),或者 - 如果其他方法都失败 - 宏。不要在整个代码中使用上述内容,将其隔离在几个头文件/实现文件中,并保存在单独的源文件夹中。

您还需要熟悉 Makefiles(无耻插件:Makefile 教程)或CMake,因为 MSVC 项目文件在 Linux 上不起作用(显然)。