2012-06-25 109 views
0

我有一个执行图像匹配的visual C++程序。我正在使用openCV。我正在寻找在Linux服务器上运行该exe文件。但我不知道如何在Linux中编译visual C++代码?编译linux中的visual C++代码?

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

+4

请看,Visual C++只是微软的C++编译器......你的意思是你想知道如何在Linux中编译C++代码?GCC可以做到这一点,但你可能会有更多的工作移植代码不仅仅是编译。 – lvella

回答

4

如果您在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'ed代码。使用typedef的转发函数(即,使用log()来使用Unix或Windows日志记录),或者 - 如果所有其他都失败 - 宏。 不要使用上面所有的代码,将它隔离在一些头文件/实现文件中,保存在一个单独的源文件夹中。

您还需要熟悉Makefiles(无耻插件:Makefile tutorial),因为MSVC项目文件在Linux上不起作用(显然)。 Makefile文件,在另一方面,可以很漂亮的Windows上工作,以及(例如,通过Cygwin,如果你愿意钻研如何调用命令行MSVC编译器,大致沿着这些线路:

ifeq ($(OSTYPE),linux) 
    CC := gcc 
else 
    CC := cl.exe 
endif 
+0

熟悉Make后,您可以查看CMake。它有相当简单的语法,并允许生成Visual,Eclipse,Make和其他一些项目文件。而且它的配置文件非常轻巧(纯文本文件) – morynicz

+0

@Link:我个人并不在乎Visual,Eclipse等,所以我既不能关注你的推荐,也不能说任何反对。尽管在编译C源代码时没有任何相关的环境,Make仍然会让我的船漂浮。 – DevSolar

0

有还有winelib和东西,指向你的编译系统,使用winegcc/wineg ++作为你的编译器,并且可以编译它,它可以编译一个相当大的windows程序子集,如果你需要的只是获得一个或两个程序工作