我有一个可视化的C++程序,执行图像匹配。我正在使用openCV。我希望在linux服务器上运行exe。但是我不知道如何在linux中编译可视化的C++代码?
在这方面,有人能帮我吗?。。
发布于 2012-06-25 14:13:08
如果您在用MSVC编写C++代码时做得很聪明,那么您从一开始就将所有与平台相关的代码(例如,微软对C++的扩展和只使用Windows库)与其余代码隔离开来,并且确切地知道在哪里进行修改才能使其在Linux上运行。
不幸的是,你的问题暗示这是你第一次尝试跨平台编码,在这种情况下,你可能在你的代码中到处都是微软的风格,并且必须一个接一个地挑选。启动编译器,查看它的错误消息,然后从那里开始。祝你好运,这将是一个痛苦,但也是一个非常有价值的教训,为您的下一个项目。
(我在这里不是在指责MSVC。对于那些用GNU-isms乱丢代码,然后想要在MSVC上编译它的人来说也是如此……)
通常的构造如下所示:
#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编译器,大致如下:
ifeq ($(OSTYPE),linux)
CC := gcc
else
CC := cl.exe
endif发布于 2012-06-25 15:44:16
也有酒馆之类的东西。让您的构建系统使用winegcc/wineg++作为您的编译器,然后使用它。它可以编译相当大的windows程序子集。如果你只需要运行一两个程序,这应该是个不错的选择。
https://stackoverflow.com/questions/11183217
复制相似问题