このような初歩的な質問で申し訳ありませんが、MySQL データベースに接続してそこで「SELECT」コマンドを実行するための最も単純なプログラムをコンパイルしているときに、Xcode (4.6.1) との戦いに勝つことができません。
このプログラムは、MySQL Connector/C++ の「examples」ディレクトリにあります。
/* 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 = "john";
pass = "john";
database = "cunda_sales";
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 ru (store_name) values ('Test is successful')");
} catch (sql::SQLException &e) {
return EXIT_FAILURE;
} catch (std::runtime_error &e) {
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Xcode でそのプログラムを実行すると、プログラムが正常にコンパイルされたというメッセージが表示されますが、呼び出し時に実行が停止します。
driver->connect(url, user, pass)
私にエラーを与える
EXC_BAD_ACCESS (code=13, address=0x0)
ほぼ同じ状況がここに記載されていました:こちらのサイト
私は彼らが従ったすべての手順を繰り返しましたが、その間違いで何もできません. また、次のコマンドを使用して、端末でプログラムをコンパイルしようとしました。
c++ -o test -I /usr/local/boost_1_53_0 -lmysqlcppconn main.cpp
すべてが正常に機能しますが、Xcode では機能しません。
このスレッドで解決策が見つかりましたが、愚かで申し訳ありませんが、Xcodeでプログラムを適切な方法でコンパイルして動作させるために何をする必要があるのか わかりません。
Guys は、問題は Xcode がコードをコンパイルするために使用する -stdlib=libc++ フラグにあると書いています。では、その間違いを避けるにはどうすればよいでしょうか。そのフラグを Xcode コンパイラから削除するか、別のコンパイラを使用しますか? それとも、このフラグを使用して MySQL Connector/C++ を再コンパイルする必要がありますか?
最終的な解決策を教えてください。ありがとうございました!