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","shenhaoinfo","sh_robot",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

 

上一篇:32网络通信之Poll模型


下一篇:fastai 2019 lesson8 notes 笔记