2

こんにちは、macports から openvrml をダウンロードしました (port install openvrml)。これでサンプル プログラム (sourceforge の openvrml からの pretty_print.cpp) ができました。これは次のように始まります。

# ifdef HAVE_CONFIG_H
#   include <config.h>
# endif

# include <openvrml/vrml97_grammar.h>
# include <openvrml/browser.h>
# include <fstream>
...

次に、Xcode で次のパスを追加し、ヘッダー検索パスとライブラリ検索パスの「再帰的」をチェックします。

/opt/local/var/macports/software

そして、「***.h ファイルが見つかりません」というエラーはすべて消えましたが、現在は次の 2 つがあります。

complex.h 943 '__pow_helper' is not a member of std
c++locale.h 71 'vsnprintf' is not a member of std

/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/complex: In function 'std::complex<_Tp> std::pow(const std::complex<_Tp>&, int)':
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/complex:943: error: '__pow_helper' is not a member of 'std'

どちらのエラーもシステム ファイルから発生します。このエラーの原因は何なのだろうか... Mac で openvrml のサンプルを使用する方法についてアドバイスをくれる人はいますか?

前もって感謝します。

4

2 に答える 2

3

同様の問題がありました。「/opt/local/include」パスに「再帰」フラグを定義しました。これにより、ブースト互換性インクルードからいくつかの奇妙な C++ ヘッダーが取り込まれました。

一般に、インクルード パスに「再帰的」フラグは必要ありません。

パスから「再帰的」のチェックを外してみてください。

于 2010-02-13T06:17:39.997 に答える
2

ブースト ヘッダーを含むパスに再帰を配置する場合、標準の C++ ヘッダーの代わりに、異なる環境や異なるコンパイラで使用されるように設計されている可能性が高いいくつかのランダムなブースト ヘッダーを使用します。標準ヘッダーの代わりに TR1 ヘッダー。これが問題の原因である可能性があります(私にも起こりました)。
同じ名前で場所のみが異なるヘッダーファイルがたくさんあるため、必要なヘッダーを含むディレクトリを見つけて、怠惰で「再帰」フラグを使用する代わりに、ヘッダー検索パスにそのディレクトリのみを配置します。

于 2011-05-30T08:58:36.097 に答える