Ошибка компиляции Cygwin в sys / _types.h - PullRequest
0 голосов
/ 24 февраля 2009

Я пытаюсь использовать Cywin для сборки кода Linux на машине win32.

Я получаю следующую ошибку VS.net 2003 в компиляторе ym:

"c: \ cygwin \ usr \ include \ sys_types.h (15): ошибка C2144: синтаксическая ошибка:« __int64 »должно предшествовать«; » «

и

c: \ cygwin \ usr \ include \ sys_types.h (15): ошибка C2501: ' расширение ': отсутствуют спецификаторы класса хранения или типа

Строка кода

__extension__ typedef long long _off64_t;

Очевидно, что я что-то здесь упускаю, но я никогда раньше не использовал cygwin, и это убивает меня.

Я хочу иметь возможность по крайней мере скомпилировать мои файлы CPP на моей машине win32 по нескольким причинам.

(это только первые две ошибки из сотен, на которые это похоже)

спасибо, тим

EDIT:

простой обходной путь, который я выбрал в качестве ответа - хотя я понимаю, что он не так полон и не так желателен, как использование gcc для компиляции ... Это быстрая и грязная компиляция, так что я могу использовать мои знакомые инструменты, прежде чем пытаться интегрироваться с Linux-машинами. (о радости кроссплатформенной разработки)

Я до сих пор голосовал за каждый из этих ответов и благодарен за помощь)

Ответы [ 4 ]

5 голосов
/ 24 февраля 2009

Я могу ошибаться, но заголовки cygwin могут быть созданы специально для компиляции с использованием cygwin gcc, а не visual studio. Попробуйте скомпилировать с помощью gcc / g ++ в cygwin.

РЕДАКТИРОВАТЬ: Я могу использовать Visual Studio, эта страница (для другого проекта), по-видимому, подразумевает, что вы можете что-то скомпилировать с помощью vc ++ / cygwin. http://opensg.vrsource.org/trac/wiki/BuildVS2005Cygwin.

Вы можете проверить это.

РЕДАКТИРОВАТЬ2: См. Также: http://www.coin -or.org / OS / Documentation / node14.html

РЕДАКТИРОВАТЬ3: Я полагаю, что наилучшим решением было бы убедиться, что Visual Studio сначала ищет стандартные пути окон. Так что, если есть система <sys/types.h>, это может быть предпочтительнее, чем версия Cygwin.

4 голосов
/ 24 февраля 2009

Ключевое слово __extension__ является расширением gcc для обозначения кода, который использует расширения gcc (в данном случае long long), поэтому он не взрывается в педантичном режиме. Если можете, попробуйте скомпилировать код с помощью gcc.

2 голосов
/ 24 февраля 2009

В C ++ любое имя, предшествующее (или содержащее) двойное подчеркивание, является именем, зарезервированным для конкретной реализации, в данном случае GNU C ++. MS C ++ будет использовать другие имена. Итог - вы не можете скомпилировать исходники g ++ с помощью MS C ++ или наоборот, если в источниках используются такие имена.

1 голос
/ 24 февраля 2009

Я думаю, что макрос extension не может быть определен. Возможно, вы захотите сделать текстовый поиск в директории заголовка Cygwin, чтобы узнать, так ли это. Если это так, убедитесь, что путь поиска в заголовке определен правильно и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...