Apple Mach-O链接器错误/ Boost Wave编译问题

时间:2015-11-29 16:53:19

标签: xcode boost

我正在尝试编译一个简单的Boost Wave示例,当Xcode识别标题时,它给了我一大堆Apple Mach-O Linker(Id)错误。我以前遇到过这个,我不记得我是怎么解决的。请帮忙!

我附上了截图。

P.S。我有Boost 1.57.0,它适用于任何Xcode项目。无论出于何种原因,它都不是在涉及标题boost / wave.hpp的情况下......如此......

#include <boost/wave.hpp>

另外,我排除了代码的主体作为罪魁祸首。这会引发链接器错误:

#include <boost/wave.hpp>
int main() { return 0; }

其他像这样的Boost标题,请不要:

#include <boost/function.hpp>
int main() { return 0; }

enter image description here

2 个答案:

答案 0 :(得分:1)

我明白了,但不知道为什么会这样。如果有人想补充说明,那就太棒了。我不得不手动添加上述每个问题中引用的各种动态和静态库。我附上了一个新截图,以便有其他人遇到这个问题可以看到最终结果。

enter image description here

答案 1 :(得分:0)

嗯,解释很简单。为了能够构建您的项目,在底层工作的编译器需要知道:

  1. 在项目文件中搜索 #include&lt; ..&gt; 的位置:这对应于g ++编译器的 -I 目录选项。在Xcode中,这对应于在项目的“构建设置”中设置“标题搜索路径”。 如果没有指定标题搜索路径,您将在 #include 行中出现错误,因为Xcode不知道在哪里查找这些包含的文件。

  2. 在构建项目时,搜索必须链接到源代码的库的位置:这对应于g ++编译器的 -L 目录选项。在Xcode中,这对应于在项目的“构建设置”中设置“库搜索路径”。 如果没有指定**库搜索路径**,则在尝试构建项目时会出现错误,因为Xcode不知道在哪里查找链接库。

  3. 在编译时必须将哪些库链接到项目文件:这对应于g ++编译器的 -l <​​/ strong>链接选项。 在Xcode中,这对应于将 .dylib 文件添加到项目的Build Phases设置中的 Link Binary With Libraries 。请注意,您无需手动将库添加到项目的主文件夹中,最后描述的步骤就足够了。

  4. 分别参见herehere了解g ++编译器的目录和链接选项。