Сбой компиляции в VS2010 для программ на C ++, которые прекрасно работают в Linux - PullRequest
0 голосов
/ 22 января 2011

Мой C ++ проект собирается и отлично работает на Linux.Сейчас я пытаюсь скомпилировать его в VS2010.Я получаю много ошибок, по-видимому, из библиотеки cmath, как эта.

Error   1   error C2061: syntax error : identifier 'acosf'  c:\program files\microsoft visual studio 10.0\vc\include\cmath  19  1   MyPROJ

Также я получаю много ошибок, связанных с файловыми операциями, таких как:

Error   1   error C3861: 'lseek': identifier not found  g:\project\file.cc  274 1   MyPROJ

Error   2   error C3861: 'write': identifier not found  g:\project\file.cc  275 1   MyPROJ

Как устранить эти ошибки.*

Ответы [ 3 ]

2 голосов
/ 22 января 2011

lseek и write являются вызовами unix (posix?), Которые не являются частью стандарта C. Они доступны в Windows, но с именами _lseek и _write

не уверен насчет acosf, хотя

РЕДАКТИРОВАТЬ: acosf должен быть доступен, если вы включите Math.h

Редактировать больше: если присмотреться к исходному сообщению, ошибка в cmath, что нормально, хотя тогда вам, вероятно, придется написать std :: acosf - но ошибка есть в файле включения Это работает нормально, когда я пытаюсь это сделать, поэтому что-то перед включением, вероятно, конфликтует. Что стоит до включения cmath в ваш источник?

0 голосов
/ 22 января 2011

Вы получите лучшие результаты, если будете использовать какой-то порт компилятора gcc для Windows. Попробуйте mingw32 или cygwin. Visual Studio - хороший компилятор, но он отличается от gcc и не имеет идентичных библиотек, поэтому вам придется переписать некоторые части исходного кода.

Вы получаете сообщения об отсутствующих функциях.

0 голосов
/ 22 января 2011

Вы не можете портировать программы Linux на Windows, не изменив немного исходники, потому что они используют разные заголовки

...