【问题标题】:Linking to PostgreSQL and SSL链接到 PostgreSQL 和 SSL
【发布时间】:2009-10-12 14:59:11
【问题描述】:

我正在尝试使用 libpq,它是 Cocoa 应用程序中 PostgreSQL 的客户端库。

首先,添加头文件:我尝试在项目属性的用户头搜索路径下添加 PostgreSQL 头文件的路径,然后编译,但由于某种原因 XCode 看不到它们。解决方案是手动将文件和 libpq.a 的副本添加到项目中。

这可行,但现在当我构建时出现 SSL 错误:

"_SSL_CTX_set_client_cert_cb", referenced from:
_pqsecure_initialize in libpq.a(fe-secure.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status

一些研究表明,这是因为 SSL 标头和 SSL 库之间不匹配。如何找到合适的头文件?

【问题讨论】:

    标签: objective-c cocoa xcode postgresql ssl


    【解决方案1】:

    添加到标题搜索路径不会自动在您的代码中包含文件;你仍然需要使用#include#import。如果你这样做了,你可以扩展构建结果来查看 Xcode 正在生成的确切的编译器/链接器命令;它应该让您对出了什么问题有所了解。

    只需自己编译 PostgreSQL 客户端库,这样您就可以知道要针对哪些 SSL 库进行编译,并且如果它们不是 OS X 的一部分,则可以包含它们。

    【讨论】:

    • 我都做到了:将搜索路径添加到我的项目设置中,我正在#importing 。我可以在使用 Finder 添加的目录中看到文件,但我无法让 XCode 搜索该特定路径。
    • 尝试将你的编译输出粘贴到某个地方(先做一个干净,这样我们就可以得到所有的)......也许会跳出来。
    【解决方案2】:

    我想我解决了这个问题,但还需要进一步测试:

    首先,我创建了一个与数据库服务器一起安装的 postgresql 库的链接:

    sudo ln -s /opt/local/lib/postgresql80/libpq.dylib /usr/lib/libpq.dylib
    

    然后我从项目中删除了对 libpq.a 的引用,并将它与新的 postgresql .dylib 链接起来。这立即解决了我的 SSL 问题。

    我仍然无法让 XCode 看到 postgresql 头文件,但至少通过将它们手动包含在项目中来解决,没有明显问题。

    【讨论】:

    • Aiee,不要链接或以其他方式写入/usr,这是个坏主意。你应该能够让它以正确的方式工作;您正在尝试做的事情没有任何异常。
    • 嗯,它似乎确实会产生奇怪的错误。它编译一次,但现在链接失败。也许如果我将postgresql库的路径添加到项目设置中......(这是一个非常令人沮丧的问题)
    • 好的,通过(非常小心地)rm'ing /usr 下的 simlink 并通过执行以下操作将库的路径添加到项目设置来修复它:项目 -> 项目设置 -> 构建 ->库搜索路径,然后将路径添加到库。我已经清理和编译了几次,似乎运行良好。
    猜你喜欢
    • 1970-01-01
    • 2016-12-24
    • 2023-01-29
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 2014-05-31
    • 2010-11-27
    • 1970-01-01
    相关资源
    最近更新 更多