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