Ich verwende SQLPP11 für SQL-Abfragen und Ergebnisse und SQLPP11-Connector-mysql, um Verbindung mit der Datenbank herzustellen.undefined Verweis auf `sqlpp :: mysql :: connection :: ~ Verbindung() '
Und mein Programm kompiliert
g++ -std=c++1y main.cpp -I ../date -lsqlpp-mysql -lmysqlclient -lboost_system -lpthread
mit Und hier ist der Beispielcode ich verwende.
bool db_connection()
{
auto config = std::make_shared<mysql::connection_config>();
config->user = "root";
config->password = "";
config->database = "test";
config->debug = true;
sqlpp::mysql::connection db(config);
try
{
sqlpp::mysql::connection db(config);
std::cout << "Database connection establish...!!\n";
std::cout << "Now executing a very simple select query in table using sqlpp11 \n";
const auto g = changestreet::Goals{};
for(const auto& row : db(select(all_of(g)).from(g).unconditionally()))
{
std::cerr << row.goalId << "\n";
std::cerr << row.goalName << "\n";
std::cerr << row.goalAmount << "\n";
}
}
catch (const sqlpp::exception& e)
{
std::cerr << "No such database exits, you'll need to create it. \n";
std::cerr << e.what() << std::endl;
return false;
}
return true;
}
Und die Fehler sind
/tmp/ccxRheKs.o: In function `db_connection_cs()':
main.cpp:(.text+0x39d): undefined reference to `sqlpp::mysql::connection::connection(std::shared_ptr<sqlpp::mysql::connection_config> const&)'
main.cpp:(.text+0x3c8): undefined reference to `sqlpp::mysql::connection::~connection()'
main.cpp:(.text+0x400): undefined reference to `sqlpp::mysql::connection::~connection()'
/tmp/ccxRheKs.o: In function `db_connection_nav()':
main.cpp:(.text+0x4bf): undefined reference to `sqlpp::mysql::connection::connection(std::shared_ptr<sqlpp::mysql::connection_config> const&)'
main.cpp:(.text+0x4ea): undefined reference to `sqlpp::mysql::connection::~connection()'
main.cpp:(.text+0x522): undefined reference to `sqlpp::mysql::connection::~connection()'
/tmp/ccxRheKs.o: In function `sqlpp::mysql::serializer_t::escape(std::string)':
main.cpp:(.text._ZN5sqlpp5mysql12serializer_t6escapeESs[_ZN5sqlpp5mysql12serializer_t6escapeESs]+0x2a): undefined reference to `sqlpp::mysql::connection::escape(std::string const&) const'
/tmp/ccxRheKs.o: In function `sqlpp::result_t<sqlpp::mysql::char_result_t, sqlpp::result_row_t<sqlpp::mysql::connection, sqlpp::field_spec_t<changestreet::Goals_::GoalId::_alias_t, sqlpp::integral, false, false>, sqlpp::field_spec_t<changestreet::Goals_::GoalName::_alias_t, sqlpp::text, true, false>, sqlpp::field_spec_t<changestreet::Goals_::GoalAmount::_alias_t, sqlpp::floating_point, true, false>, sqlpp::field_spec_t<changestreet::Goals_::GoalStartTime::_alias_t, sqlpp::day_point, true, false>, sqlpp::field_spec_t<changestreet::Goals_::GoalEndTime::_alias_t, sqlpp::day_point, true, false>, sqlpp::field_spec_t<changestreet::Goals_::GoalMonthlyContribution::_alias_t, sqlpp::floating_point, true, false>, sqlpp::field_spec_t<changestreet::Goals_::GoalStatus::_alias_t, sqlpp::text, true, false>, sqlpp::field_spec_t<changestreet::Goals_::UsersUserId::_alias_t, sqlpp::integral, true, false> > >::~result_t()':
main.cpp:(.text._ZN5sqlpp8result_tINS_5mysql13char_result_tENS_12result_ro
Hier ist die build logs der beiden Bibliotheken auf meinem 64-Bit-debian-Maschine.
Das deutet stark darauf hin, dass libsqlpp-mysql mit einem anderen Compiler als dem erstellt wurde, mit dem Sie die Bibliothek verwenden wollten. Ich würde wetten, das Problem würde verschwinden, wenn Sie CMake sagen würden, die Bibliothek mit 'g ++ - 5' oder' g ++ - 6' anstelle des Systemstandards zu erstellen. – ildjarn