2012-06-25 5 views
0

У меня есть визуальная программа на C++, которая выполняет сопоставление изображений. Я использую openCV. Я хочу запустить exe на сервере linux. Но я не знаю, как скомпилировать Visual C++-код в Linux?компиляция визуального кода на C++ в Linux?

Может ли кто-нибудь помочь мне в этом отношении. , ,

+4

См. Visual C++ - это только компилятор Microsoft для C++ ... Вы хотите знать, как компилировать код на C++ в Linux? GCC может это сделать, но вы, вероятно, будете больше работать с переносом кода чем просто компиляция , – lvella

ответ

4

Если вы делали что-то шикарно во время написания кода C++ в MSVC, вы оставите все зависящие от платформы коды (т. Е. Расширения Microsoft до C++ и используете только библиотеки Windows) с самого начала с самого начала и точно знаете где делать изменения, чтобы заставить его работать и на Linux.

К сожалению, ваш вопрос подсказывает, что это ваша первая попытка кросс-платформенного кодирования, и в этом случае вы, вероятно, засоряли Microsoft-измы во всем своем коде и должны выбирать их по одному. Запустите компилятор, посмотрите его сообщения об ошибках и оттуда. Удачи, это будет боль, но и очень ценный урок для вашего следующего проекта.

(я не пальцем указывая на MSVC здесь. Сама же самое верно и для тех, кто помет их код с GNU-измов, а затем хотят его компиляции на MSVC ...)

Обычный построить выглядит так:

#if defined(_MSC_VER) 
// Microsoft version 
#elif defined(__GNUC__) 
// GCC version 
#else 
#error Platform/compiler not supported. 
#endif 

Edit: в случае это не очевидно, идея заключается в том, чтобы держать ifdef'ed код выше при абсолютном минимуме. Используйте функции typedef, функции пересылки (т. Е. Log() для использования либо Unix, либо Windows logging), или - если все остальное не работает - макросы. Не используйте, используя вышеуказанный код, изолируйте его в нескольких файлах заголовка/реализации, хранящихся в отдельной исходной папке.

Вы также захотите ознакомиться с Makefiles (бесстыдной плагин: Makefile tutorial), потому что файлы проекта MSVC не работают на Linux (очевидно). Makefiles, с другой стороны, может работать довольно красиво на Windows, а также (например, через Cygwin, если вы заботитесь вникать в то, как вызвать компилятор MSVC в командной строке, примерно вдоль этих линий:

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

После ознакомления с Make, вы можете проверить CMake. Он имеет довольно простой синтаксис и позволяет создавать файлы проектов для Visual, Eclipse, Make и некоторых других. И файлы конфигурации очень легкие (текстовые текстовые файлы) – morynicz

+0

@Link: Лично мне все равно, что касается Visual, Eclipse и т. Д., Поэтому я не могу ни второй рекомендации, ни сказать что-либо против этого. Make всегда плавал на моей лодке даже в нескольких средах, не связанных с компиляцией источника C. – DevSolar

0

Там в также winelib и т. д. Направьте свою систему сборки на использование winegcc/wineg ++ в качестве своего компилятора и подойдите к ней. Он может скомпилировать довольно большой набор оконных программ. Это должно быть хорошим вариантом, если вам нужно всего лишь получить один или два программы для работы.

Смежные вопросы