linux环境下写C++操作mysql(一)
/***************** connect.cpp g++ connect.cpp -o connect -I /usr/include/mysql/ -L /usr/lib/mysql/ -lmysqlclient ****************/ #include<stdio.h> #include<string.h> #include<stdlib.h> #include"mysql.h" class CMysqlInterface { public: CMysqlInterface(); ~CMysqlInterface(); void mysqlLibInit(); void mysqlLibDestroy(); int Connect(); int Close(); private: MYSQL *m_mysqlPtr; }; int main() { printf("version 1.1\n"); int iRet = -1; CMysqlInterface MysqlObj; iRet = MysqlObj.Connect(); if(0 == iRet) { printf("mysql_real_connect success\n"); } else { printf("mysql_real_connect failed\n"); } return 0; } CMysqlInterface::CMysqlInterface() { printf("CMysqlInterface\n"); m_mysqlPtr = NULL; m_mysqlPtr = mysql_init(NULL); } CMysqlInterface::~CMysqlInterface() { Close(); } int CMysqlInterface::Close() { int iRet = 0; if(NULL != m_mysqlPtr) { mysql_close(m_mysqlPtr); m_mysqlPtr = NULL; } return iRet; } void CMysqlInterface::mysqlLibDestroy() { mysql_library_end(); } int CMysqlInterface::Connect() { printf("Connect\n"); int iRet = -1; m_mysqlPtr = mysql_real_connect(m_mysqlPtr,"localhost","root","csql","child",0,NULL,0); if(m_mysqlPtr) { iRet = 0; } return iRet; }
exbot@ubuntu:~/wangqinghe/MySql/20190621/01$ g++ connect.cpp -o connect -I /usr/include/mysql/ -L /usr/lib/mysql/ -Imysqlclient
/tmp/cceJyiND.o:在函数‘CMysqlInterface::CMysqlInterface()’中:
connect.cpp:(.text+0xaf):对‘mysql_init’未定义的引用
/tmp/cceJyiND.o:在函数‘CMysqlInterface::Close()’中:
connect.cpp:(.text+0x100):对‘mysql_close’未定义的引用
/tmp/cceJyiND.o:在函数‘CMysqlInterface::mysqlLibDestroy()’中:
connect.cpp:(.text+0x121):对‘mysql_server_end’未定义的引用
/tmp/cceJyiND.o:在函数‘CMysqlInterface::Connect()’中:
connect.cpp:(.text+0x17c):对‘mysql_real_connect’未定义的引用
collect2: error: ld returned 1 exit status
这个问题是因为连接命令出了错误 后面跟的应该是 -l 而不是-L
输出结果:
exbot@ubuntu:~/wangqinghe/MySql/20190621/02$ g++ connect.cpp -o connect -I /usr/include/mysql/ -L /usr/lib/mysql/ -lmysqlclient
exbot@ubuntu:~/wangqinghe/MySql/20190621/02$ ./connect
version 1.1
CMysqlInterface
Connect
mysql_real_connect success
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)