linux - 在 Linux 中编译 Visual C++ 代码?

标签 linux visual-c++ gcc opencv cmake

我有一个执行图像匹配的可视化 C++ 程序。我正在使用 OpenCV。我希望在 linux 服务器上运行 exe。但是我不知道如何在 linux 中编译 visual C++ 代码?

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

最佳答案

如果您在 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

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

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

关于linux - 在 Linux 中编译 Visual C++ 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11183217/

相关文章:

linux命令将一个文件复制到多个文件夹?

python - 是否有最佳实践方法来实现以不同方式处理 Windows 和 Linux 环境的 Python 脚本?

linux - 如何捕获和存储从我的服务器发送的传出 HTTP 请求?

visual-c++ - 互斥体根本没有释放

c++ - WinAPI 单击按钮时没有任何反应

c - gcc 中的 #pragma 等效项是什么?

linux - 我必须学习什么编程语言才能构建可以帮助我监控家中电力(或水)使用情况的软件?

c++ - 静态 const 类成员的奇怪链接器问题

c++ - gcc 插件 c c++ 查找全局非静态变量

c - 为什么 GCC pad 与 NOP 一起工作?