【问题标题】:Access MySQL server from Objective-C project with ARC使用 ARC 从 Objective-C 项目访问 MySQL 服务器
【发布时间】:2015-10-13 18:44:32
【问题描述】:

我似乎找不到从 Objective-C Mac OS 项目(使用 ARC)访问 MySQL 服务器的解决方案。

我尝试使用 MySQL framework that Sequel Pro provides,但每当我创建连接对象时,我的应用程序就会崩溃 (EXC_i386_GPFLT):

SPMySQLConnection *conn = [[SPMySQLConnection alloc] init];

我不知道这是否是框架中的错误,或者我是否需要做其他事情才能使用它。

我尝试了一些其他库(例如 MySqueakQl),但它们都不兼容 ARC。

我也尝试直接链接到libmysqlclient.a,但如果我将该库复制到我的项目中,我会收到代码签名错误;如果我只是链接到 /usr/local/mysql/lib/ 中的 .a,我会收到另一个错误:dyld: Library not loaded: libmysqlclient.18.dylib ... Reason: image not found。我不得不承认我在使用第三方库(无论是 .a 还是 .dylib)方面的经验为零,而且可能做得不对。

我有点惊讶,那里似乎没有最新的(阅读:工作)解决方案。我知道,消费者应用程序更喜欢使用 Core Data,但我必须访问公司数据库服务器。

有没有人看到或多或少“开箱即用”的解决方案(库?)?我愿意为真正有效的东西付费。

一个很好的关于如何在 Xcode 项目中使用 .a 库的教程,这也将帮助我了解 dylib 错误的来源也将非常有帮助。

【问题讨论】:

    标签: mysql objective-c xcode macos automatic-ref-counting


    【解决方案1】:

    问题解决了。包含库时我可能犯了一些错误。

    执行此操作的正确步骤:

    • libmysqlclient.a 库拖到您的项目窗口中
    • 确保将如果需要复制项目设置为,并将其添加到您的主要目标中
    • 将包含标题的文件夹(位于/usr/local/mysql/include 下)拖到您的项目窗口中
    • 同样,确保将Copy items if needed设置为Yes并检查正确的目标。

    然后:

    #import "mysql.h"
    - (BOOL) mySQLTest {
        MYSQL connection;
        mysql_init(&connection);
        if(!mysql_real_connect(&connection,
                               [self.host UTF8String],
                               [self.user UTF8String],
                               [self.password UTF8String],
                               [self.database UTF8String],
                               self.port,
                               NULL,
                               0)) {
            return NO;
        }
    
        // ... work with the DB
    
        mysql_close(&connection);
    
        return YES;
    }
    

    像魅力一样工作。

    我不知道为什么在我之前的尝试中我得到了关于 dylib 的错误;我从来没有用过它(只有静态库)。

    代码签名问题可能只是 Xcode 中的一个错误或一次性怪癖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 2012-07-25
      • 2017-02-21
      • 2016-10-30
      • 2014-03-22
      • 2019-03-20
      • 1970-01-01
      相关资源
      最近更新 更多