mysql c++ connector 编译问题,直接上代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql c++ connector 编译问题,直接上代码相关的知识,希望对你有一定的参考价值。

OBJS = test.o
CC = g++
FLAGS = -O -g
SQL_H =/home/mysql/mysql-connector-c++-1.0.5-linux-glibc2.3-x86-32bit/include

SQL_LIB =/home/mysql/mysql-connector-c++-1.0.5-linux-glibc2.3-x86-32bit/lib

LIBS=mysqlcppconn

test: $(OBJS)

test.o : sqltest.cpp
$(CC) sqltest.cpp -l$(LIBS) -I$(SQL_H) -L$(SQL_LIB)
clean:
rm -rf *.o test

编译的时候报错....
/home/mysql/mysql-connector-c++-1.0.5-linux-glibc2.3-x86-32bit/lib/libmysqlcppconn.so: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve(unsigned int)@GLIBCPP_3.2'
/home/mysql/mysql-connector-c++-1.0.5-linux-glibc2.3-x86-32bit/lib/libmysqlcppconn.so: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@GLIBCPP_3.2'
/home/mysql/mysql-connector-c++-1.0.5-linux-glibc2.3-x86-32bit/lib/libmysqlcppconn.so: undefined reference to `std::__throw_length_error(char const*)@GLIBCPP_3.2'
/home/mysql/mysql-connector-c++-1.0.5-linux-glibc2.3-x86-32bit/lib/libmysqlcppconn.so: undefined reference to `std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const@GLIBCPP_3.2'
后面还有一大片,看样子是说缺乏标准库,但是我的/usr/lib下面是有libstdc++这个库的,而且我编译也用的是g++.....怎么还会少标准库呢...???

参考技术A 你先用set 命令看看 关于mysql 的环境变量是什么。。 看看它的库在什么地方
我记得应该有默认的mysql的环境变量的

连接器 c++ rs->getBoolean 访问冲突

【中文标题】连接器 c++ rs->getBoolean 访问冲突【英文标题】:Connector c++ res->getBoolean Acess Violation 【发布时间】:2014-11-14 10:20:09 【问题描述】:

我在Visual Studio 2013 中使用mysql-connector-c++-1.1.4-winx64。 连接到特定数据库并读取整数值是可行的,但是无法检索任何布尔值。 我可以编译包含附加代码的程序,但程序关闭检索:

“程序 '[3480] Project1.exe: Managed (v4.0.30319)' 已退出 代码为 -1073741819 (0xc0000005) '访问冲突'。"

感谢您的帮助!

                                    const char* idQuery = "SELECT EXISTS (SELECT id FROM experiment_results WHERE id='22');";
                                    stmt = con->createStatement();
                                    stmt->execute(idQuery);
                                    while (res->next()) 
                                    
                                        bool flag = res->getBoolean(1);
                                    

【问题讨论】:

他们的查询是空的。仔细检查它,你会发现它可能试图访问空数据。 我是否需要对此进行进一步解释。 “SELECT EXISTS(Query)”不应该独立于“Query”的返回值,总是检索真或假吗? 【参考方案1】:

再次查看代码后,我发现了我的错误: stmt->执行(idQuery); // 应该: res = stmt->executeQuery(idQuery);

【讨论】:

以上是关于mysql c++ connector 编译问题,直接上代码的主要内容,如果未能解决你的问题,请参考以下文章

使用 pyinstaller 编译时“除外”期间的 mysql.connector 错误?

在Ubuntu上使用VSCode编译MySQL Connector/C连接库

mysql-connector-c++ - ‘get_driver_instance’ 不是 ‘sql::mysql’ 的成员

python3使用MySQL connector对MySQL数据库进行操作

mysql jdbc驱动不能加载问题

命令行编译带外部包依赖的java源文件 [以JDBC MySQL8为例]