我正在使用 MySQL/C++ 连接器。
我在这个question中尝试了'd3l'提供的解决方案
然后我得到了这个错误:
tester.cpp:在函数“int main()”中:
tester.cpp:12:20:警告:变量‘con’设置但未使用 [-Wunused-but-set-variable]
sql::连接 *con;
^
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::affected_rows(st_mysql*)”中:
(.text+0x164): 未定义对 `mysql_affected_rows' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::autocommit(st_mysql*, char)'中:
(.text+0x18d): 未定义的对 `mysql_autocommit' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::close(st_mysql*)”中:
(.text+0x1ac): 未定义的对 `mysql_close' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::commit(st_mysql*)”中:
(.text+0x1ca): 未定义的对 `mysql_commit' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::data_seek(st_mysql_res*, unsigned long long)'中:
(.text+0x1f3): 未定义的对 `mysql_data_seek' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::debug(char const*)'中:
(.text+0x212): 未定义的对 `mysql_debug' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::mysql_errno(st_mysql*)'中:
(.text+0x230): 未定义的对 `mysql_errno' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::error(st_mysql*)'中:
(.text+0x24e): 未定义的对 `mysql_error' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::fetch_field(st_mysql_res*)'中:
(.text+0x26c): 未定义的对 `mysql_fetch_field' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::fetch_field_direct(st_mysql_res*, unsigned int)'中:
(.text+0x292): 未定义的对 `mysql_fetch_field_direct' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::fetch_lengths(st_mysql_res*)'中:
(.text+0x2b0): 对 `mysql_fetch_lengths' 的未定义引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::fetch_row(st_mysql_res*)'中:
(.text+0x2ce): 未定义的对 `mysql_fetch_row' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::field_count(st_mysql*)”中:
(.text+0x2ec): 未定义的对 `mysql_field_count' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::free_result(st_mysql_res*)'中:
(.text+0x30a): 未定义的对 `mysql_free_result' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::get_client_version()”中:
(.text+0x31d): 未定义对 `mysql_get_client_version' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::get_server_info(st_mysql*)”中:
(.text+0x33c): 未定义的对 `mysql_get_server_info' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::get_server_version(st_mysql*)'中:
(.text+0x35a): 未定义对 `mysql_get_server_version' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::info(st_mysql*)'中:
(.text+0x378): 未定义的对 `mysql_info' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::init(st_mysql*)'中:
(.text+0x396): 未定义的对 `mysql_init' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::library_init(int, char**, char**)'中:
(.text+0x3c4): 未定义的对 `mysql_server_init' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::library_end()”中:
(.text+0x3d7): 未定义的对 `mysql_server_end' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::more_results(st_mysql*)'中:
(.text+0x3f6): 未定义的对 `mysql_more_results' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::next_result(st_mysql*)”中:
(.text+0x414): 未定义的对 `mysql_next_result' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::num_fields(st_mysql_res*)'中:
(.text+0x432): 未定义的对 `mysql_num_fields' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::num_rows(st_mysql_res*)'中:
(.text+0x450): 未定义的对 `mysql_num_rows' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::options(st_mysql*, mysql_option, void const*)'中:
(.text+0x47e): 未定义的对 `mysql_options' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::query(st_mysql*, char const*)'中:
(.text+0x4a7): 未定义的对 `mysql_query' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::ping(st_mysql*)'中:
(.text+0x4c6): 未定义的对 `mysql_ping' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o): 在函数 `sql::mysql::NativeAPI::LibmysqlStaticProxy::real_connect(st_mysql*, char const*, char const*, char const*, char const *, unsigned int, char const*, unsigned long)':
(.text+0x519): 未定义的对 `mysql_real_connect' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::real_escape_string(st_mysql*, char*, char const*, unsigned long)'中:
(.text+0x550): 未定义的对 `mysql_real_escape_string' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o): 在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::real_query(st_mysql*, char const*, unsigned long)'中:
(.text+0x581): 未定义的对 `mysql_real_query' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::rollback(st_mysql*)”中:
(.text+0x5a0): 未定义的对 `mysql_rollback' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::sqlstate(st_mysql*)”中:
(.text+0x5be): 未定义的对 `mysql_sqlstate' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o): 在函数 `sql::mysql::NativeAPI::LibmysqlStaticProxy::ssl_set(st_mysql*, char const*, char const*, char const*, char const *, 字符常量*)':
(.text+0x603): 未定义的对 `mysql_ssl_set' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::store_result(st_mysql*)”中:
(.text+0x622): 未定义的对 `mysql_store_result' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::use_result(st_mysql*)”中:
(.text+0x640): 未定义的对 `mysql_use_result' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::warning_count(st_mysql*)”中:
(.text+0x65e): 未定义的对 `mysql_warning_count' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_affected_rows(st_mysql_stmt*)'中:
(.text+0x67c): 未定义的对 `mysql_stmt_affected_rows' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_attr_set(st_mysql_stmt*, enum_stmt_attr_type, void const*)'中:
(.text+0x6aa): 未定义的对 `mysql_stmt_attr_set' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_bind_param(st_mysql_stmt*, st_mysql_bind*)'中:
(.text+0x6d3): 未定义的对 `mysql_stmt_bind_param' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_bind_result(st_mysql_stmt*, st_mysql_bind*)'中:
(.text+0x6fd): 未定义的对 `mysql_stmt_bind_result' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_close(st_mysql_stmt*)”中:
(.text+0x71c): 未定义的对 `mysql_stmt_close' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_data_seek(st_mysql_stmt*, unsigned long long)'中:
(.text+0x745): 未定义的对 `mysql_stmt_data_seek' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_errno(st_mysql_stmt*)'中:
(.text+0x764): 未定义的对 `mysql_stmt_errno' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_error(st_mysql_stmt*)”中:
(.text+0x782): 未定义的对 `mysql_stmt_error' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_execute(st_mysql_stmt*)”中:
(.text+0x7a0): 未定义的对 `mysql_stmt_execute' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数“sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_fetch(st_mysql_stmt*)”中:
(.text+0x7be): 未定义的对 `mysql_stmt_fetch' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_field_count(st_mysql_stmt*)'中:
(.text+0x7dc): 未定义的对 `mysql_stmt_field_count' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_init(st_mysql*)'中:
(.text+0x7fa): 未定义的对 `mysql_stmt_init' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_num_rows(st_mysql_stmt*)'中:
(.text+0x818): 未定义的对 `mysql_stmt_num_rows' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_param_count(st_mysql_stmt*)'中:
(.text+0x836): 未定义的对 `mysql_stmt_param_count' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_prepare(st_mysql_stmt*, char const*, unsigned long)'中:
(.text+0x867): 未定义的对 `mysql_stmt_prepare' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_result_metadata(st_mysql_stmt*)'中:
(.text+0x886): 未定义的对 `mysql_stmt_result_metadata' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o): 在函数 `sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_send_long_data(st_mysql_stmt*, unsigned int, char const*, unsigned long)'中:
(.text+0x8ba): 未定义的对 `mysql_stmt_send_long_data' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_sqlstate(st_mysql_stmt*)'中:
(.text+0x8d8): 未定义的对 `mysql_stmt_sqlstate' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::stmt_store_result(st_mysql_stmt*)'中:
(.text+0x8f6): 未定义对 `mysql_stmt_store_result' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::thread_end()'中:
(.text+0x909): 未定义的对 `mysql_thread_end' 的引用
/usr/lib/libmysqlcppconn.a(mysql_client_api.cpp.o):在函数`sql::mysql::NativeAPI::LibmysqlStaticProxy::thread_init()'中:
(.text+0x91d): 未定义的对 `mysql_thread_init' 的引用
collect2:错误:ld 返回 1 个退出状态
我正在运行 Ubuntu 14。
请帮忙。
编辑:
正如“mukunda”所说:
"通常connector/c++已经静态链接到libmysql,这是构建源码时的默认设置"
所以我编译它:
sudo g++ -Wall -I/usr/include/cppconn -o testapp tester.cpp
然后错误减少到只有:
tester.cpp:在函数“int main()”中:
tester.cpp:12:20:警告:变量‘con’设置但未使用 [-Wunused-but-set-variable]
sql::连接 *con;
^
/tmp/ccSdYfYy.o:在函数“main”中:
tester.cpp:(.text+0xa): undefined reference to `get_driver_instance'
collect2:错误:ld 返回 1 个退出状态
再次编辑:
这是构建此代码的必要步骤:
#include <stdlib.h>
#include <iostream>
#include <mysql_connection.h>
#include <driver.h>
#include <exception.h>
#include <resultset.h>
#include <statement.h>
using namespace sql;
int main(void){
sql::Driver *driver;
sql::Connection *con;
driver = get_driver_instance();
con = driver->connect("tcp://127.0.0.1:3306","root","YOURPASSWORD");
return 0;
}
1.安装mysqlcppconn:sudo apt-get install libmysqlcppconn-dev
2.安装mysqlclient:sudo apt-get install libmysqlclient-dev libmysqlclient18
3. 在终端中编译:
sudo g++ -Wall -I/usr/include/cppconn -o testapp tester.cpp -L/usr/lib -lmysqlcppconn -lmysqlclient
感谢 Mike 和 Biffen。