smatter
smatter

Reputation: 29218

Compilation fails in VS2010 for C++ programs building fine in Linux

My C++ project builds and runs fine on Linux. Now I am trying to compile it in VS2010. I get many errors seemingly from cmath library like the following one.

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

Also I get many file operations related compilation errors like:

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

How to eliminate these errors.

Upvotes: 0

Views: 1315

Answers (3)

jcoder
jcoder

Reputation: 30035

lseek and write are unix (posix?) calls that are not part of the C standard. They are available on windows but using the names _lseek and _write

not sure about acosf though

EDIT: acosf should be available, are you include math.h

Edit more: Looking more closely at the original post the error is in cmath which is fine although then you probably have to write std::acosf - but the error is in the include file. It works fine when I try it so something before the include is likely conflicting. What is before the include of cmath in your source?

Upvotes: 2

Al Kepp
Al Kepp

Reputation: 5980

You will get better results easier ifyou use some port of gcc compiler for Windows. Try mingw32 or cygwin. Visual Studio is good compiler, but it is not the same as gcc and doesn't have identical libraries, so you will need to rewrite some parts of your source code.

The errors you get are about missing functions.

Upvotes: 0

BlackBear
BlackBear

Reputation: 22989

You can't port linux programs on windows without changing the sources a bit because they use different headers

Upvotes: 0

Related Questions