1

我有一个 OpenGL 项目,可以在 Windows 中正常工作/编译。
我想将应用程序移植到 Mac OS。
我在 Mac 上启动并运行了该应用程序,但项目中的文本不可见。
所以我决定在 Mac 中使用 3rd 方库进行文本渲染,我遇到了 FreeType,它具有抗锯齿和支持 UNICODE 等许多优点。

所以,我在我的 Mac 上下载了这个库,'./configure'd 它,像往常一样做了'make'和'make install'。
然后在 Xcode 中,我分别设置了包含目录和库目录的搜索路径,

/usr/local/include/usr/local/lib

然后我在 Xcode 中添加了“其他链接器标志”,freetype-configure --libs给了我以下标志
- - L/usr/local/lib -lfreetype -lz -lbz2,我在 Xcode 中添加了它们。

现在,每当我包含一个 freetype 标头时,都没有问题,但是当我从 freetype 库中调用任何方法时,它会给我以下链接器错误。

Xcode 的链接器错误

在谷歌上查找后,我发现我必须相应地设置构建目标,我这样做了,现在我的应用程序为i386 x86构建,问题仍然存在。

我在配置 freetype ./ configure CC="gcc -arch i386" CXX="g++ -arch i386"时也尝试了以下标志, 但这也没有帮助。

我对 Mac OS X/Unix 环境相对较新,我以前使用 VS 2008 在 windows 上使用 freetype。任何帮助将不胜感激。

4

1 回答 1

0

什么:

您的库搜索路径中似乎有多个 libfreetype.dylib 文件。

/master_repository/......../lib 包含一个,/usr/local/lib 包含另一个

-lfreetype是告诉链接器在所有使用-L标志指定的目录中查找名为 libfreetype.dylib 的文件的便捷方式。因为 -L/master_repository... 在链接器参数列表中位于 -L/usr/local/lib 之前,所以链接器使用它找到的第一个实例并尝试链接到那个实例。

使固定:

  • 重新组织您的-L标志,以便-L/usr/local/lib位于另一个之前。如果可以,请避免使用此选项。

  • 删除额外的搜索路径,只留下相关的。

  • 通过将-lfreetype替换为库的完整路径来显式指定库,而不是依赖于方便的-l : /usr/local/lib/libfreetype.dylib

于 2013-12-10T01:16:03.570 回答