2009-11-20 2 views
0

Я использую Visual Studio .NET 2003, и я пытаюсь передать код, который я написал и скомпилировал/успешно выполнил в Linux GCC для Windows.Портирующий код от Linux до Windows

Я новичок при использовании VS. Я создал новый проект и добавил все файлы .c и .h, которые у меня есть в проекте, Project -> Add Existing Items, затем выбрал все файлы .c и .h.

Я не знаком с тем, как работают компиляторы и компоновщики и т. Д., Но существует ли разница между VS и gcc компиляцией/ссылками #include файлов? Моя привычка программирования в Linux заключалась в том, чтобы иметь один файл main.c и #include все остальные .h или .c файлы, которые мне нужны. Тогда я бы только скомпилировал файл main.c. Но в VS кажется, что файлы #include не отображаются программой, потому что я получаю ошибки, которые говорят мне, что определенные структуры или переменные не были объявлены, даже если они находятся в моих пользовательских файлах заголовков.

Я также получаю ошибки, такие как DIR - необъявленный идентификатор. Я включил, так почему он не может распознать DIR?

спасибо.

С уважением, Rayne

ответ

2

Рассмотрим компиляции программы с окнами порт GCC (из Mingw32 или Cygwin) первым. Это обеспечит вам более привычную среду. Если вам все равно придется скомпилировать все с помощью VC++, у вас будет более инкрементный процесс портирования.

Кроме того, это не очевидно из вашего сообщения, но, похоже, вы пытаетесь использовать dirent.h. Обратите внимание, что dirent.h (и соответствующие библиотеки) is not included with VC++.

2

Одним из лучших способов обучения было бы начать с самого маленького приложения, которое вы можете скомпилировать на обоих. Разверните это рабочее и портативное приложение шаг за шагом в более полнофункциональное приложение, которое вы желаете.

Не забудьте добавить все файлы .c/.cpp в папку «Исходные файлы» в проекте, поскольку они не будут компилироваться в противном случае.

Ограничьте любой переносимый код (который вам понадобится) в одном месте. Например, если вам нужно создавать потоки, у вас есть общая функция создания потока, используемая повсюду (но реализована по-разному). Использование портативных библиотек, таких как Boost, может помочь здесь.

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