我有一个执行图像匹配的visual C++程序。我正在使用openCV。我正在寻找在Linux服务器上运行该exe文件。但我不知道如何在Linux中编译visual C++代码?编译linux中的visual C++代码?
任何人都可以在这方面帮助我。 。 。
我有一个执行图像匹配的visual C++程序。我正在使用openCV。我正在寻找在Linux服务器上运行该exe文件。但我不知道如何在Linux中编译visual C++代码?编译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'ed代码。使用typedef的转发函数(即,使用log()来使用Unix或Windows日志记录),或者 - 如果所有其他都失败 - 宏。 不要使用上面所有的代码,将它隔离在一些头文件/实现文件中,保存在一个单独的源文件夹中。
您还需要熟悉Makefiles(无耻插件:Makefile tutorial),因为MSVC项目文件在Linux上不起作用(显然)。 Makefile文件,在另一方面,可以很漂亮的Windows上工作,以及(例如,通过Cygwin,如果你愿意钻研如何调用命令行MSVC编译器,大致沿着这些线路:
ifeq ($(OSTYPE),linux)
CC := gcc
else
CC := cl.exe
endif
有还有winelib和东西,指向你的编译系统,使用winegcc/wineg ++作为你的编译器,并且可以编译它,它可以编译一个相当大的windows程序子集,如果你需要的只是获得一个或两个程序工作
请看,Visual C++只是微软的C++编译器......你的意思是你想知道如何在Linux中编译C++代码?GCC可以做到这一点,但你可能会有更多的工作移植代码不仅仅是编译。 – lvella