首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux中编译可视化C++代码?

在linux中编译可视化C++代码?
EN

Stack Overflow用户
提问于 2012-06-25 11:37:16
回答 2查看 3.4K关注 0票数 1

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

在这方面,有人能帮我吗?。。

EN

回答 2

Stack Overflow用户

发布于 2012-06-25 14:13:08

如果您在用MSVC编写C++代码时做得很聪明,那么您从一开始就将所有与平台相关的代码(例如,微软对C++的扩展和只使用Windows库)与其余代码隔离开来,并且确切地知道在哪里进行修改才能使其在Linux上运行。

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

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

通常的构造如下所示:

代码语言:javascript
复制
#if defined( _MSC_VER )
// Microsoft version
#elif defined( __GNUC__ )
// GCC version
#else
#error Platform / compiler not supported.
#endif

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

您还需要熟悉Makefile(无耻插件:Makefile tutorial),因为MSVC项目文件不能在Linux上工作(显然)。另一方面,Makefile也可以在Windows上很好地工作(例如,通过Cygwin,如果你想深入研究如何在命令行上调用MSVC编译器,大致如下:

代码语言:javascript
复制
ifeq ($(OSTYPE),linux)
    CC := gcc
else
    CC := cl.exe
endif
票数 4
EN

Stack Overflow用户

发布于 2012-06-25 15:44:16

也有酒馆之类的东西。让您的构建系统使用winegcc/wineg++作为您的编译器,然后使用它。它可以编译相当大的windows程序子集。如果你只需要运行一两个程序,这应该是个不错的选择。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11183217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档