将静态库添加到 iPhone 项目

发布于 2024-07-18 04:39:17 字数 1146 浏览 12 评论 0原文

这个问题的动机是我试图让 LDAP 函数与 iPhone 应用程序一起使用,这是我在论文中尝试的一个项目。

当我开发应用程序时,我使用了 ldap.framework 框架,它是 Mac OS X 的一部分。这在模拟器中运行良好,但是当我现在尝试在设备上获取该应用程序时,它告诉我不允许我这样做使用这个框架。

经过一些研究,我发现我可以使用arm架构构建openldap并将静态库添加到我的设备的应用程序中。

我最终成功地通过设置提到的变量来编译配置和构建openldap 这里并使用以下命令...

Ade$ ./configure CC=$DEVROOT/usr/bin/arm-apple-darwin9-gcc-4.0.1 \
LD=$DEVROOT/usr/bin/ld --host=arm-apple-darwin --with-yielding_select=yes
Ade$ make depend
Ade$ make

我被告知我要查找的文件的扩展名为“.a”,因此我搜索了一个提到 ldap 的“.a”文件。 .

Ade$ sudo find / -name *ldap*.a
Password:
/Users/Ade/Desktop/openldap-2.4.16/libraries/libldap/.libs/libldap.a
/Users/Ade/Desktop/openldap-2.4.16/libraries/libldap_r/.libs/libldap_r.a

所以我假设这些是我需要的文件?

我的问题是我下一步该怎么做? 我知道我需要将库添加到 Xcode 项目中,并且可能还需要添加大量“.h”文件?

如果有人能给我一些文档的指导或对下一阶段有任何启发,我将非常感激。

非常感谢, 阿德附言

。 我还在我的博客 www.greenpasta.com 上讨论了这个过程。

The motivation for this question is me trying to get LDAP functions to work with an iPhone application which is a project I'm attempting for part of my dissertation.

When I was developing the application I used the ldap.framework framework that is part of Mac OS X. This works fine in the simulator, but when I try to now get the app on a device it tells me that I'm not allowed to use this framework.

After some research I found that I could build openldap using the arm architecture and add the static library to my application destined for my device.

I eventually managed to compile configure and build openldap by setting variables as mentioned here and using the following commands...

Ade$ ./configure CC=$DEVROOT/usr/bin/arm-apple-darwin9-gcc-4.0.1 \
LD=$DEVROOT/usr/bin/ld --host=arm-apple-darwin --with-yielding_select=yes
Ade$ make depend
Ade$ make

I was told that the file I'm looking for will have an extension of '.a' so I searched for a '.a' file that mentions ldap...

Ade$ sudo find / -name *ldap*.a
Password:
/Users/Ade/Desktop/openldap-2.4.16/libraries/libldap/.libs/libldap.a
/Users/Ade/Desktop/openldap-2.4.16/libraries/libldap_r/.libs/libldap_r.a

So I assume these are the files I need?

My question is what do I do next? I know I need to add the library to the Xcode project and probably add a load of '.h' files too?

If anyone can give me a pointer to documentation or shed any light on the next stage I would be really grateful.

Many thanks,
Ade

ps. I have also talked about this process on my blog at www.greenpasta.com.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陌若浮生 2024-07-25 04:39:17

我也做了同样的事情来为 iPhoneOS 2.2 构建 LDAP 客户端。 您只需将 .a 拖到“与库链接”构建阶段即可。 我建议使用该库的常规(非 _r)版本,除非您特别需要对 ldap 内容进行重入(我不推荐)。 您还可以将 .h 添加到项目中,这通常是访问它们的最简单方法。

I've done this same thing to build an LDAP client for the iPhoneOS 2.2. You just to drag the .a into the "link with libraries" build stage. I recommend using the regular (non _r) version of the library, unless you specifically need reentrancy on your ldap stuff (which I don't recommend). You can also add the .h's to your project, which is generally the easiest way to access them.

奶气 2024-07-25 04:39:17

只需将 .a 文件拖到 Xcode 项目中,然后选择“将文件复制到项目中”即可。 我对 OpenLDAP 不熟悉,但我认为 _r 版本只是一个线程安全版本。 我建议使用它而不是复制另一个。 您可能不应该将这两个文件复制到 Xcode 中,否则您将收到链接错误。

然后对定义 OpenLDAP 客户端 API 的 .h 文件执行相同的操作 - 我再次不确定这些文件是什么,但我相信您可以轻松找到。

我建议将 .a 和 .h 文件一起组织在资源下的 Xcode 组中。

将头文件包含在您的源代码中,您就可以开始了。

Simply drag the .a files into the Xcode project and choose "copy files into project". I'm not familiar with OpenLDAP but I think the _r version is just a threadsafe version. I would recommend using that and not copying the other. You should probably not copy both files into Xcode or you will get link errors.

Then do the same for the .h files that define the client APIs of OpenLDAP - again I'm not sure which these are but I'm sure you can find out easily.

I would advise organising the .a and .h files together in a Xcode group under resources.

Include the header files in your source and you should be good to go.

在巴黎塔顶看东京樱花 2024-07-25 04:39:17

您可能还需要将 -lldap 添加到链接器命令中(在构建设置窗格中)。

You may also need to add -lldap to your linker command (in the build settings pane).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文