技术标签: c++ mysql.h下载
#include #include#include#include
using namespacestd;#define MYSQL_USER "root"
#define MYSQL_PASSWD "passwd"
#define MYSQL_PORT 3306
intmain(){
mysqlpp::Connection con(false);
con.set_option(new mysqlpp::SetCharsetNameOption("utf8"));if(!con.connect("test","localhost",MYSQL_USER,MYSQL_PASSWD,MYSQL_PORT)){
cout<
}
cout<
mysqlpp::Query query=con.query("select * from City");
mysqlpp::StoreQueryResult result=query.store();if(nullptr==result){
cout<
}for(auto iter=result.begin();iter!=result.end();++iter){
cout<
}return 0;
}
View Code
报错:
/opt/code/testC++/tcp_server/test_server_1/main.cpp:5:10: fatal error: mysql++/mysql++.h: 没有那个文件或目录
#include
2. 怎么安装头文件
系统环境:
debian系统kali
1. 配置
debian:
apt-get install libmysqlclient-dev libmysql++-dev
redhat:
yum install mysql-devel
发现没有,就这么干,根据不同系统因地制宜
apt-cache search libmysql
发现没有
apt-getupdate更新源
apt-cache search libmysql 有了类似的了
apt-get install default-libmysqlclient-dev default-libmysqld-dev
2. 下载解压安装:
[root@localhost 下载]#wget https://tangentsoft.com/mysqlpp/releases/mysql++-3.2.4.tar.gz
[root@localhost 下载]# tar zxvf mysql++-3.2.2.tar.gz
进入mysql++目录下,开始编译,先执行./configure生成makefile文件,之后再make,编译出libmysqlpp.so库文件:
./configure
报错:
下面这段来自blog:https://blog.csdn.net/daodaozhu05/article/details/12970657
checking for MySQL include directory... configure: error: Didn't find the MySQL include dir in'/usr/include/mysql
/usr/local/include/mysql
/usr/local/mysql/include
/usr/local/mysql/include/mysql
/usr/mysql/include/mysql
/opt/mysql/include/mysql
/sw/include/mysql'
这个有两种情况,这个是第一种
首先查找本地libmysqlclient的目录在哪里,在终端敲下面的命令:
locate libmysqlclient
sudo ./configure --with-mysql-lib=/usr/lib/x86_64-linux-gnu
如果还出现刚才的问题
Didn't find the mysql in ......
这是用--with-mysql-include选项进行安装,比如我的mysqlclient lib在/opt/local/lib/mysql5/mysql, 而mysql 在/opt/local/include/mysql5/mysql,则用下列命令安装一遍即可。
sudo ./configure --with-mysql-lib=/opt/local/lib/mysql5/mysql/ --with-mysql-include=/opt/local/include/mysql5/mysql/
3.编译并安装
sudo make
sudo make install
第二种方法:
apt-cache search libmysql
发现没有
apt-get update更新源
apt-cache search libmysql 有了类似的了
apt-get installdefault-libmysqlclient-dev default-libmysqld-dev
root@corleone:/usr/local/lib# apt-cache search libmysqldefault-libmysqlclient-dev -MySQL database development files (metapackage)default-libmysqld-dev -MySQL embedded database development files (metapackage)
libcrypt-mysql-perl -Perl module to emulate the MySQL PASSWORD() function
libglpk40-linear programming kit with integer (MIP) support
libmariadbclient-dev-compat -MariaDB database development files (libmysqlclient compatibility)
libmysql-diff-perl - module forcomparing the table structure of two MySQL databases
libmysql-ocaml - OCaml bindings forMySql (runtime package)
libmysql-ocaml-dev - OCaml bindings forMySql (development package)
libmysqlcppconn-dev - MySQL Connector for C++(development files)
libmysqlcppconn7v5- MySQL Connector for C++(library)
libreoffice-base-drivers - Database connectivity drivers forLibreOffice
node-mysql - MySQL client implementation forNode.js
solr-common - Enterprise search server based on Lucene3 - common files
然后直接也OK
./configure
make
make install
4. 添加软连接
此段来自blog:https://www.cnblogs.com/zhxilin/p/5897211.html
install成功后会将.so文件拷贝到/usr/local/lib下,并把.h头文件拷贝到/usr/local/include下。
到这里MySQL++已经安装到本机了,然而如果直接在C++代码里引用如下头文件是无法编译通过的!
#include
原因是C++在编译时需要加载这个动态库,默认情况下,g++编译器只会使用/lib和/usr/lib这两个目录下的库文件。
回头看一下make之前的./configure步骤,我们并没有指定--prefix=/some/path,所以库会默认安装到/usr/local目录下。
既然libmysqlpp.so是在/usr/local/lib下,编译器当然就无法找到它的定义了。
那么编译器如何正确找到/usr/local/lib目录呢?
/etc/ld.so.conf文件记录了编译器编译时使用的动态库路径!那我们把/usr/local/lib路径加入到文件末尾就可以了!
次配置文件修改保存后,通过ldconfig程序(在usr/sbin/下),将/etc/ld.so.conf文件列举的路径下的库文件缓存到/etc/ld.so.cache以供开发使用:
[root@localhost mysql++]# ldconfig
然后
[root@localhost mysql++]# ln -s /usr/local/lib/libmysqlpp.so /usr/lib/libmysqlpp.so
然并卵;;;
/usr/local/include/mysql++/common.h:219:11: fatal error: mysql.h: 没有那个文件或目录
# include
^~~~~~~~~
3.执行c++代码执行测试
#include
intmain()
{
cout << "hello world" << endl;return 0;
}
g++ test.cpp -o test.so
./test.so
这里还有可能报错,为什么,有可能是你用的编译器的问题,举个例子,你用的是clion软件,而这个软件默认是cmake的所以我们需要手动编译
指定一些东西 :https://www.cnblogs.com/lywy510/p/3615710.html
g++ -g -o mysql.so -I /usr/include/mysql test.cpp -L /usr/lib/x86_64-linux-gnu/ -lmysqlclient -lz
如果是c的话,就是gcc喽
编译的时候要注意用到2个路径,mysql.h和libmysqlclient.so的路径
查找mysql.h路径
[root@liu mysql]# find / -name 'mysql.h'
/usr/include/mysql/mysql.h
[root@liu mysql]# find / -name '*mysqlclient*'
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18
/usr/lib/x86_64-linux-gnu/libmysqlclient.a
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.a
/usr/lib/x86_64-linux-gnu/libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18.0.0
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
然后./mysql.so,就可以啦
文章浏览阅读1.7k次。sqlmap是一个开源的渗透测试工具,它可以自动化检测sql注入漏洞利用sql注入缺陷 接管数据库服务器。_kali安装sqlmap
文章浏览阅读598次,点赞19次,收藏4次。本题来自第六届蓝桥杯省赛C++ B组 /JAVA A组C组《移动距离》_移动距离 蓝桥杯 c++
文章浏览阅读3.4k次。zram disksize 设置小内存项目:1G,2G,3G RAMzram disksize设置.高通:高通的设置比较简单:相关代码:init.qcom.post_boot.shif [ -f /sys/block/zram0/disksize ]; thenif [ -f /sys/block/zram0/use_dedup ]; thenecho 1 > /sys/block/zram0/use_dedupfiif [ $MemTotal -le5242_use_dedup
文章浏览阅读281次。今天中学化学园给大家推荐几款超有趣的教育软件APP,大家可以自行搜索下载,又萌又有趣,在玩乐中还能学到知识!手机要有足够内存哦~~~!下面几款适用于苹果系统~~~1.神奇的化学元素简介:可以高效帮助您记忆有关元素的基本知识。适用对象:初高中学生2.烧杯简介:150多种药剂、300多种神奇的化学反应任你尝试。安全、有趣生动、随时随地做各种化学实验,生动直观,充满乐趣~适用对象:高中学生锂..._化学游戏软件
文章浏览阅读618次。QMA8658A 是一款功能强大的6轴加速度传感器,其内置了3轴加速度计和3轴陀螺仪,能够同时测量三个方向的加速度和角速度。该传感器广泛应用于无人机、机器人、智能手机等领域。为了帮助开发人员快速评估和开发基于QMA8658A的解决方案,我们推出了QMA8658A-EVB全面的评估板。该评估板精心设计,预置了所有必需的硬件接口,兼容I2C和SPI接口,方便与任意MCU处理器进行连接和通信。此外,我们还提供了详细的驱动程序和使用指南,以便开发者能够轻松使用该评估板进行二次开发。4.1 I2C接口。_qmi8658a中文资料
文章浏览阅读551次。点击蓝字 关注我们缺血性心脏病相关肠道微生物及菌群代谢物研究进展iMeta主页:http://www.imeta.science综 述●原文链接DOI: https://doi.org/10.1002/imt2.94● 2023年2月26日,宁波大学附属第一医院崔翰斌团队、浙江省动脉粥样硬化疾病精准医学研究重点实验室范勇团队在iMeta在线发表了题为“Microbiota-related ..._与急性心肌梗死有关的微生物
文章浏览阅读1.5k次。渗透测试-安服面试点总结_安服题
文章浏览阅读424次。错误类型判断 在C语言中,常见的错误类型包括语法错误、逻辑错误和运行时错误。逻辑错误是指程序的逻辑错误,导致程序的输出不符合预期。运行时错误是指在程序运行过程中发生的错误,例如除以零、访问不存在的内存等。通过本文的介绍,你已经了解了在C语言项目中打开文件、编辑、运行和测试程序的基本方法,以及常见的错误类型判断和调试技巧。同时,持续学习和实践是提高编程技能的关键,希望本文能为你在C语言编程之路上提供帮助和指导。此外,还将探讨常见的错误类型判断和程序测试方法,帮助你提高代码质量和开发效率。_c语言编辑
文章浏览阅读2.8k次。对于集合的遍历首选方法是for-eachfor(Element e :c){ doSomething(e);}这是1.5版本之后的做法;java1.5之前使用的是Iterator迭代器。为了弄清楚为啥比普通的for循环或者whlie循环好,请看一下代码Iterator i=c.iterator();while(i.hasNext()){_c++中的while循环可有什么替代
文章浏览阅读7.7k次,点赞5次,收藏33次。一、问题为什么要进行网页授权?首先我们进行网页授权的需求是,获取用户信息、最主要是获取openid唯一值,可以用于用户登录、支付等功能,这时候就需要进行网页授权获取用户的信息以及openid。二、静默授权/非静默授权在操作之前可以先提前看看网页授权官方文档静默授权snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid;用来获取进入页面的用户的openid的,并且自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)。非静默授权snsapi_user_微信公众号静默授权
文章浏览阅读235次。A Key Volume Mining Deep Framework for Action Recognition_a key volume mining deep framework for action recognition
文章浏览阅读3.9k次。广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!2、python生成目录树上述 cmd 方式虽然可以生成目录树,但是并不美观,让我们用 python 实现。 2.1 标准库pathlib介绍python有一个标准文件路径处理库 os.path ,从 python3.4 开始,python 又加入了一个标准库 pathlib ,该库..._python创建一个窗口