如何在Xcode中将静态库添加到C++项目中

16
我正在使用Xcode 4.6.1作为IDE开发一个C++项目。现在,我想添加一个名为mylib.a的静态库和相关头文件mylib.h。
我阅读了这个解决方案,但它并没有起作用(点击Target Dependencies后,框仍为空)。
有没有办法完成这个任务?

更新:

我创建了一个,然后在其中添加了文件mylib.a。看起来一切都运行正常,但在编译时会出现以下警告:

ld: warning: ignoring file /Users/vdenotaris/Desktop/Code/MyStaticLib/mylib.a, file was built for archive which is not the architecture being linked
(i386):/Users/vdenotaris/Desktop/Code/MyStaticLib/mylib.a

1个回答

17

Target dependencies用于当您的静态库是由另一个 XCode 项目创建的,并且您想要包含此项目时,以便您可以轻松地在您的库和对应的应用程序上进行开发。

如果您想要包含外部库,则应选择您的目标,在 TARGETS 下选择 Build Phases 部分,然后您会看到 Link Binary With Libraries 区域,您可以通过 拖放 或单击 + 添加库至该区域。

要添加头文件路径,请选择您的项目,在 PROJECT 下选择 Build Settings 部分,然后您会看到 Search Path 中的点 Header Search Paths,应该将其设置为包含头文件所在目录的路径。

ProjectTargets 中设置的区别在于,在 Project 中,它为所有目标设置默认设置。在 Targets 中,您可以按 Target 更改设置。

编辑: 对于链接错误,这两个答案可能有帮助:


1
非常感谢你的回答。我在我的项目中链接了 mylib.amylib.h;现在,在构建时出现了以下警告:ld: warning: ignoring file /Users/vdenotaris/Desktop/Code/MyStaticLib/mylib.a, file was built for archive which is not the architecture being linked (i386): /Users/vdenotaris/Desktop/Code/MyStaticLib/mylib.a。我该如何解决这个错误? - vdenotaris
1
我猜想所考虑的静态库是为x64构建的,而我的项目基于i386架构。 - vdenotaris
我以为这是你自己的库,因为路径看起来像是你自己的。如果不是你自己的库,你可以在命令行中使用 lipo -info /Users/vdenotaris/Desktop/Code/MyStaticLib/mylib.a 进行检查。 - t.niese
你的猜测是正确的,链接错误是因为你的项目是i386而库是x86_64 - t.niese
是的,我刚刚重新构建了OpenCV(在我的项目中使用),以支持x86_64架构,一切都很好。非常感谢。 - vdenotaris
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接