Compilation fails in VS2010 for C++ programs build

2020-05-08 06:47发布

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.

3条回答
【Aperson】
2楼-- · 2020-05-08 06:52

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

查看更多
家丑人穷心不美
3楼-- · 2020-05-08 06:57

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.

查看更多
Luminary・发光体
4楼-- · 2020-05-08 06:59

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?

查看更多
登录 后发表回答