【发布时间】:2019-12-05 22:01:58
【问题描述】:
我正在尝试使用 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);
}
我收到以下错误:
架构 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 版
- 如果缺少某些详细信息,请告诉我,我会立即添加它们。
提前谢谢你!
【问题讨论】:
-
get_driver_instance() 定义在哪里?
-
@nivpeled in driver.h from 'mysql-connector-c++' lib。像这样: extern "C" { CPPCONN_PUBLIC_FUNC sql::Driver * get_driver_instance(); } 在类驱动程序之外
-
好的,你的链接器命令行是什么?
-
@nivpeled 就是链接器命令行的意思:link(来自 Xcode 的照片)
-
@nivpeled 我添加了-lmysqlcppconn(没有'8')并且它的工作!谢谢!!!
标签: c++ mysql xcode macos linker