如何修复“ x86_64体系结构的未定义符号:“ _ get_driver_instance”'链接器错误

时间:2019-07-28 08:01:25

标签: c++ mysql xcode macos linker

我正在尝试使用c ++和mysql(mysql-connector-c ++)构建一个简单的项目。
经过数小时的工作,我设法解决了将boost lib和mysql-connector-c ++ lib与Xcode中的项目链接的问题。

通过将这些路径添加到我的Xcode项目中来解决该问题: (在标题和库搜索路径中,在项目构建设置中)

headers and library search paths

现在,当我尝试使用mysql示例建立与数据库的简单连接时,如下所示:

void DataBase::connectToDataBase() {

    driver =  get_driver_instance();
    setConectionProperties();

    try {
        connection = driver->connect(*properties);
        connection->setSchema(DATABASE);
    }catch (SQLException &e) {
        cout << e.what();
    }
    this->~DataBase();
    exit(1);
}

My complete code

我收到以下错误:

  

体系结构x86_64的未定义符号:     “ _get_driver_instance”,引用自:         DataBase.o中的DataBase :: connectToDataBase()   ld:找不到架构x86_64的符号   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

Full error log with linker command line

我对链接器错误以及如何解决它们没有太多了解。 我搜索了这个问题,发现这是一个非常常见的问题,但没有设法理解或解决它。

如果您有任何建议,我将很高兴听到。

一些必要的详细信息:
我正在使用MacBook Air High Sierra版本10.13.6
通过Homebrew安装了“ boost”和“ mysql-connector-c ++”。
我正在使用Xcode版本10.1

  • 如果缺少某些详细信息,请让我知道,请立即添加。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

我的问题的解决方案是:

在“其他链接器标志”中添加标志:“-lmysqlcppconn”

(“其他链接器标志”可以在项目“构建设置”的“链接”中找到)

The solution

  • 非常感谢@nivpeled