我有一個執行圖像匹配的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