2011-01-22 5 views
0

내 C++ 프로젝트가 Linux에서 올바르게 빌드되고 실행됩니다. 이제 VS2010에서 컴파일하려고합니다. 나는 다음과 같은 cmath 라이브러리에서 많은 오류를 겉으로보기에 얻는다. 이러한 오류를 제거하는 방법Linux에서 정상적으로 컴파일되는 C++ 프로그램의 경우 VS2010에서 컴파일이 실패합니다.

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 

:

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

또한 나는 많은 파일 작업이 같은 컴파일 오류 관련 얻을.

답변

2

lseek 및 write는 C 표준의 일부가 아닌 unix (posix?) 호출입니다. 좀 더 자세히 상대 : acosf는 사용할 수 있어야합니다 당신은 math.h

편집을 더 포함

편집 불구하고 그들은 창을 볼 수 있지만 acosf에 대한

확실하지 _write _lseek와 이름을 사용하는 원래 게시물은 오류가 cmath에 괜찮아요 그럼에도 불구하고 아마 std :: acosf를 작성해야하지만 오류는 포함 파일에 있습니다. 내가 그것을 시도 할 때 그것은 포함하기 전에 무언가가 상충 될 수 있기 때문에 잘 동작합니다. 출처에 cmath가 포함되기 전에 무엇입니까?

+0

저는 거의 cmath/math.h를 사용하여 거의 아무 일도하지 않지만 오래 전부터 멀리있는 수학 컴파일러와 연결하기 위해 컴파일러에게 명시 적으로 말해야했습니다. 어쩌면 VS도 비슷한 어리 석음을 가지고 있을까요? –

+0

acosf를 사용하는 vc2010의 테스트 프로그램은 math.h가 아닌 특수 라이브러리 나 헤더없이 컴파일되고 작동합니다. – jcoder

+0

_lseek 및 _write가 정상적으로 작동했습니다! 내 문법 (이 자동 생성 된 코드의 파일 이름은 y.tab.c)에 yacc (Bison)에 의해 자동 생성 된 파서 코드를 사용하고 있습니다. 편집을 시도하고 "math.h"를 포함하여 도움을받지 못했습니다. linux에서 사용 된 Makefile에서 명령은 "g ++ -c y.tab.c"입니다. – devnull

0

당신은 소스를 변경하지 않고 창에 포트 리눅스 프로그램은 조금 그들은 당신은 더 나은 결과를 쉽게 가질수있어 Windows 용 GCC 컴파일러의 몇 가지 포트를 사용 얻을 것이다 다른 헤더

0

를 사용할 수 없습니다 때문입니다. mingw32 또는 cygwin을 시도하십시오. Visual Studio는 좋은 컴파일러이지만 gcc와 동일하지 않으며 동일한 라이브러리를 가지고 있지 않으므로 소스 코드의 일부분을 다시 작성해야합니다.

오류는 기능이 누락 된 것입니다.

관련 문제