none
エラーの解決方法を教えてください RRS feed

  • 質問

  • VisualStudio2008を使っているのですが

    c:\ode-0.13\include\ode\common.h(59) : fatal error C1189: #error :  You can only #define dSINGLE or dDOUBLE, not both

    このようなエラーが発生してしまいます。

    どうすればエラーを消すことができますでしょうか?

    プログラミングについてはほぼ初心者なので、細かく教えていただけるとうれしいです。

    よろしくお願いします。

    2014年7月3日 9:02

すべての返信

  • といってもメッセージ通りですが…。dSINGLEとdDOUBLEはどちらか片方しか#defineできないよ、と。

    #define dSINGLEと#define dDOUBLEがどこかで記述されていませんか? あとはプロジェクトのプロパティの「プリプロセッサ」の欄にdSINGLE/dDOUBLEが存在していませんか?

    2014年7月3日 9:21
  • まず、ODEのReadmeを読んだほうが良いかもしれません。
    で、検索すると、以下のページが見つかりました。どちらを有効化すべきかも書いてありますね。

    http://www35.tok2.com/home/hashimotolab/ODEwithVC++install/ODE.htm

    2014年7月3日 10:12
  • 回答ありがとうございます。

    ご指摘の通り、#define dSINGLEと#define dDOUBLEの記述と、プリプロセッサの欄にdSINGLE/dDOUBLEが存在しないか調べましたが共にありませんでした。

    同じ開発環境の別のパソコンで同じプログラムをビルドしてもこのようなエラーはでませんでした。

    何か原因として考えられることはありますでしょうか?

    2014年7月9日 2:35
  • 自分の提示したページ(見ましたでしょうか?)の説明によると、
    ODEを配置したフォルダの\include\ode\config.hの
    30行目くらいにあるそうですよ。
    古い情報なので、現在はやり方が違うかもしれませんが。
    2014年7月9日 2:52
  • 回答ありがとうございます。

    提示していただいたページを参考に、核当しそうな箇所をいじってみましたが、解決できませんでした。

    config.hがなかったのでcommon.hのそれらしいところをいじりました。

    2014年7月9日 3:17
  • 提示していただいたページを参考に、核当しそうな箇所をいじってみましたが、解決できませんでした。

    config.hがなかったのでcommon.hのそれらしいところをいじりました。

    それらしいところをいじってみた、ではなく、具体的にどういう記述からどういう記述に変更したのかをお書きください。

    で、dSINGLEとdDOUBLEを適当にソースコードに書いて、F12キーを押してみれば、プリプロセッサを定義しているところに飛びませんかね?

    2014年7月9日 3:47
  • 弱りましたね。しかたないので、ode-0.13をダウンロードして解凍し、
    バージョンが異なりますが、

    http://demura.net/9ode/9619.html

    を参考にしてビルド環境を作成し、VS2010Expressでビルドしてみました。
    多数の警告が出ましたが(主にBOM無しUTF-8の件)、あっさり終了。
    ボックスのデモも完動しますね。

    ちなみに、#define dDOUBLEは、precision.hに定義されていますが、
    dIDESINGLEが定義されていない場合はdDOUBLEにされますので、
    結果的に何もしないのが正解のようです。

    さて、そうなると、質問者さんの環境でエラーが出る原因が
    むしろわからなくなりました。

    一度ODE関連を全て削除して、最初からやり直してみてはどうでしょう。
    自分の場合、10分程度でボックスやバスケットのデモが見られましたよ。
    または、情報の確実性が高いODE-0.12でやってみるのも手ですね。

    2014年7月9日 5:03
  • 返信が遅れてしまい申し訳ありません。

    ODE関連を全て削除し、ODE-0.12でやってみたところエラーがなくなりました。

    原因はよくわかりませんでしたが、無事解決することができました。

    様々なアドバイスありがとうございました。

    2014年7月30日 3:06