2010-12-13 7 views
0

私は、誰かがこの問題を以前にも遭遇したことを期待しています。G ++ math.hの問題

G ++を使用してLinux用に開発するためにVisual Studioを使用しようとしています。私は、G ++コンパイラでコンパイルした場合TANF()

をのmath.hを含めると、使用しようとしています

"アーム-なし-Linuxが-gnueabi-gが++"、すべてが

けど場合に動作しますこれはドキュメントが正しいものであると言うディレクトリを含み、追加、および "CodeSourcery社\のSourcery G ++ Liteの\アームなし - のlinux-gnueabi \ libcの\ USR \ \含める" は、その後のmath.hを含め、

視覚的

スタジオは数学関数tanf()を認識しません。

誰もが何故考えているのですか?

ありがとうございました。

編集: 同じアプリが正常にこのコマンドラインでコンパイル:
アームなし - のlinux-gnueabi-G ++ -oテストmain.cppに "-I%PALMPDK%\含ま"「-I%PALMPDK%\私はGとLinux用開発するのVisual Studioを使用しようとしています許可-shlibの-未定義-lSDL -lGLESv2 -lpdl

+1

「私は視覚的な使用しようとしています「を使用し、出力ウィンドウ」のためのボタンがありますG ++を使ってLinux用に開発するスタジオ」この声明は私を恐怖と怒りで満たしています。 – SingleNegationElimination

+0

私は理由を知らないが、なぜlinuxをインストールするのかもわからない。完全なインストールをしたくない場合でも、仮想マシンを使用できます。 Linuxは素晴らしいです。 –

+0

それは大丈夫です、我々は一度すべての騒動だった。 – bitwise

答えて

0

解決策が見つかりました。

代わりにMinGWをダウンロードしてインストールしても問題ありません。私はgettimeofday()のような余分なもののための関数プロトタイプをすべて持っており、tanf()のようなすべての通常のsuffはまだ正常に動作しています。

PS:Visual Studioのもそれがうまくによって生成されたエラーダンプ「アーム - なし - のlinux-gnueabi-Gを++」

+0

gj、あなたは元気です! – bitwise

1

++ - SDL」 "-L%PALMPDK%\デバイス\ libに" -Wl、\含ま。

Do not。

組み込みARMマシン向けにクロスコンパイラを使用してビルドしようとしているようです。おそらく、コンパイラだけで手に入ることはできません。libc以上のものにリンクするには、ルート環境全体が必要です。 Visual Studioは優れたIDEですが、実際にはこの役割を果たせません。対応するルート環境(自宅、buildroot、openembeddedなど)を備えた実際のLinuxマシンが本当に必要です。

+0

申し訳ありませんが、あなたは私の質問を誤解しているようです。私はビジュアルスタジオにカスタムビルドツールを追加しましたが、プロジェクトはうまくいきます...しかし、非C++関数にintellisenseを使用できるようにgccライブラリを組み込むと、数学関数がバグを起こし始めます。 – bitwise

0

私はVisual Studioには<math.h>があり、それはMicrosoftの数学ヘッダー(基本的にantediluvianであり、tanfなどのC99ニセティのサポートが不足している)を参照する必要があると思います。あなたが遭遇している実際のエラーを投稿していないので、これはちょうど推測です。 「ビジュアルスタジオは数学関数を認識しません」と正確に何を意味していますか?それはコンパイルに失敗しますか?リンクすること?エラーメッセージの正確なテキストは何ですか?コンパイラやリンカに渡される正確なオプションは何ですか?

+0

math.hをインクルードして右クリック/オープンすると、、 ヘッダーに「このファイルはGNU Cライブラリの一部です」と表示されます。 これは正しいファイルです。また、サブヘッダファイルfeatures.hの1つで、次のように定義されています。 _ISOC99_SOURCE - > ISO C99からISO C89への拡張。 は、math.hのこのセクションを有効にします。 #if定義済み__USE_ISOC99 /*宣言のファイルを再び含めます。今回は 'double 'の代わりに' float' を使用し、各関数名にfを追加します。 */ でも、これはg ++コンパイラでコンパイルされますが、Visual Studioでは識別子tanf()は未定義です。 – bitwise

+0

@Nick:まだコンパイラを呼び出すために使用されているコマンドです。 MSVCはコンパイラに正確に何を渡しますか?正常にビルドしたら、コンパイラには何を渡しますか? –

+0

はオリジナルの投稿にコマンドラインを追加しました – bitwise

0

1)C++には<cmath>が含まれ、math.hではありません。

2)C++では、tanfではなく、float引数(オーバーロードあり)を使用してtanを使用します。

+0

'math.h'はC++でも有効ですが(' cmath'が優先されます)、 'tanf'を提供しています。 – peoro

+0

@peoro:ベンダー固有の未定義の動作です。 –