2011-01-22 8 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?)呼び出しです。 は、Windows上で利用可能ですが、名前を使用しては_lseekと

EDITしかしacosfわからない_write:acosfが利用可能であるべきを、あなたはより多くのmath.h

編集が含まれています。で、もっとよく見ます元の投稿のエラーはcmathにありますが、おそらくstd :: acosfを記述する必要がありますが、エラーはインクルードファイルにあります。インクルードが矛盾する可能性がある前に、試してみるとうまくいきます。あなたのソースにcmathのインクルードの前には何がありますか?

+0

私はまれにcmath/math.hで何かをすることはほとんどありませんが、ずいぶん前に、(VS以外の)コンパイラに数学ライブラリをリンクするよう明示する必要がありました。たぶんVSは似たような愚かさを持っていますか –

+0

vc2010のacosfを使ったテストプログラムは、math.h以外の特別なライブラリやヘッダなしでコンパイルされ、うまく動作します。 – jcoder

+0

_lseekと_writeはうまくいきました!私は文法のためにyacc(Bison)によって自動生成されたパーサーコードを使用しています(この自動生成コードのファイル名はy.tab.cです)。私はそれを編集しようとし、 "math.h"を含めましたが、それは助けにはなりません。私がlinuxで使ったMakefileでは、コマンドは "g ++ -c y.tab.c"です。 – devnull

0

あなたがソースを変更せずにWindows上のポートLinuxプログラムは少し彼らはあなたがより良い結果に簡単ifyouは、Windows用のgccコンパイラのいくつかのポートを使用するでしょう異なるヘッダ

0

を使用することはできませんので。 mingw32またはcygwinを試してみてください。 Visual Studioは良いコンパイラですが、gccと同じではなく、同一のライブラリを持たないため、ソースコードの一部を書き直す必要があります。

エラーは機能が不足していることが原因です。

関連する問題