2

嘿,我刚刚从 macports 下载了 openvrml(端口安装 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 中,我添加了以下路径并检查 Header 搜索路径和 Lib 搜索路径的“递归”:

/opt/local/var/macports/software

并且所有 '***.h file not found' 错误都消失了,但现在我有以下两个:

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”路径定义了“递归”标志。这从 boost 兼容性中引入了一些奇怪的 c++ 头文件。

通常,您不希望包含路径上出现“递归”标志。

尝试从路径中取消选中“递归”。

于 2010-02-13T06:17:39.997 回答
2

如果您将递归放在包含 boost 标头的路径上,您将使用一些随机的 boost 标头,这些标头可能设计用于不同的环境和/或不同的编译器,而不是标准的 C++ 标头,例如,您将包括TR1 标头而不是标准标头。这很可能是您的问题的原因(它也发生在我身上)。
只需找到包含您需要的头文件的目录,然后只将其放在头文件搜索路径中,而不是懒惰并使用“递归”标志,因为有很多头文件名称相同但位置不同。

于 2011-05-30T08:58:36.097 回答