gpt4 book ai didi

c++ - MySQL Connector/C++ BAD ACCESS 崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:12 25 4
gpt4 key购买 nike

在 Xcode 中使用 C++ 我尝试使用 MySQL Connector/C++ 访问 MySQL 数据库。问题是程序(用 Xcode 编译)总是崩溃

EXC_BAD_ACCESS (code=13, address=0x0)

调用时

driver->connect(url, user, pass)

在 Xcode 中,我创建了一个完整的新项目(OS X > 命令行工具),在 main.cpp 中插入了代码(见下文),添加了 Boost 和 MySQL Connector header 包含路径以及 libmysqlcppconn.6.1.1.1。 dylib 作为链接库并点击运行按钮。

接下来是,当我使用手动编译程序时

c++ -o test -I /usr/local/mysqlConnector/include/ -lmysqlcppconn main.cpp

程序运行良好,还在表上运行了 INSERT 语句。

程序代码取自 MySQL Connector/C++ 示例,即 pthreads.cpp 示例,但截取了重要部分:

/* Standard C++ includes */
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <stdexcept>

#include <mysql_connection.h>
#include <mysql_driver.h>

#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>

std::string url;
std::string user;
std::string pass;
std::string database;

/**
* Usage example for Driver, Connection, (simple) Statement, ResultSet
*/
int main(int argc, const char **argv)
{
sql::Driver *driver;
std::auto_ptr< sql::Connection > con;

url = "tcp://127.0.0.1:3306";
user = "appserver";
pass = "testpw";
database = "appserver";

try {
driver = sql::mysql::get_driver_instance();

/* Using the Driver to create a connection */
con.reset(driver->connect(url, user, pass));
con->setSchema(database);

sql::Statement* stmt = con->createStatement();
stmt->execute("INSERT INTO testtable (testnumber) values (5)");
} catch (sql::SQLException &e) {
return EXIT_FAILURE;
} catch (std::runtime_error &e) {
return EXIT_FAILURE;
}

return EXIT_SUCCESS;
}

最佳答案

好了,问题解决了。

这里的问题是一个编译标志。 MySQL Connector/C++ 编译时没有
-stdlib=libc++ 标志,但 Xcode 将该编译/链接标志添加到其命令中。这导致了崩溃。这也解释了为什么手动编译的程序有效,因为我没有将该标志包含到编译命令中。

为了更清楚:我使用 -stdlib=libc++ 标志重新编译了 MySQL Connector/C++。然后 Xcode 编译的程序对我来说工作正常。为了编译我添加的 MySQL Connector/C++

-DMYSQL_CXXFLAGS=-stdlib=libc++

到安装连接器时需要运行的cmake命令。

make VERBOSE=1

然后证明在编译连接器源代码时实际使用了该标志。

关于c++ - MySQL Connector/C++ BAD ACCESS 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14570347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com