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コネクタヘッダーインクルードパスと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;
}