Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 562|回复: 0

c++连接mysql并提示“无法解析的外部符号 _mysql_server_init@12”解决方法&提示缺少“libmysql.dll”

[复制链接]
  • TA的每日心情
    奋斗
    2024-6-6 10:50
  • 签到天数: 750 天

    [LV.10]以坛为家III

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    706216
    发表于 2021-6-12 06:21:26 | 显示全部楼层 |阅读模式

    课程作业要用c++连接mysql server,但是出现些小问题,经查阅资料已经解决,做一下笔记。

    环境:vs2017, mysql版本是8.0.16-winx64。

    设置项目属性

      项目 -  C/C++ - 常规 - 附加包含目录 里面添加 C:\mysql\mysql-8.0.16-winx64\include。  大家依葫芦画瓢,改成自己的相应目录。

       项目 - 配置属性 - 链接器 - 常规 - 附加库目录, 添加C:\mysql\mysql-8.0.16-winx64\lib。 也是要换成自己的目录。

      项目 - 配置属性 - 链接器 - 输入 - 附加依赖项    添加libmysql.lib.

     

     其实就是将头文件和库文件包含进来。

    测试程序

     1 //下面的代码是一个实现C++连接MYSQL数据库的很好的例子
     2 
     3 #include <winsock.h>
     4 #include <iostream>
     5 #include <string>
     6 #include <mysql.h>
     7 using namespace std;
     8 
     9 #pragma comment(lib, "ws2_32.lib")
    10 #pragma comment(lib, "libmysql.lib")
    11 //单步执行,不想单步执行就注释掉
    12 #define STEPBYSTEP
    13 
    14 int main() {
    15     cout << "****************************************" << endl;
    16 
    17 #ifdef STEPBYSTEP
    18     system("pause");
    19 #endif
    20 
    21     //必备的一个数据结构
    22     MYSQL mydata;
    23 
    24     //初始化数据库
    25     if (0 == mysql_library_init(0, NULL, NULL)) {
    26         cout << "mysql_library_init() succeed" << endl;
    27     }
    28     else {
    29         cout << "mysql_library_init() failed" << endl;
    30         return -1;
    31     }
    32 
    33 #ifdef STEPBYSTEP
    34     system("pause");
    35 #endif
    36 
    37     //初始化数据结构
    38     if (NULL != mysql_init(&mydata)) {
    39         cout << "mysql_init() succeed" << endl;
    40     }
    41     else {
    42         cout << "mysql_init() failed" << endl;
    43         return -1;
    44     }
    45 
    46 
    47 
    48 #ifdef STEPBYSTEP
    49     system("pause");
    50 #endif
    51 
    52     //在连接数据库之前,设置额外的连接选项
    53     //可以设置的选项很多,这里设置字符集,否则无法处理中文
    54     if (0 == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk")) {
    55         cout << "mysql_options() succeed" << endl;
    56     }
    57     else {
    58         cout << "mysql_options() failed" << endl;
    59         return -1;
    60     }
    61 
    62 #ifdef STEPBYSTEP
    63     system("pause");
    64 #endif
    65 
    66     //连接数据库
    67     if (NULL != mysql_real_connect(&mydata, "localhost", "root", "123456", "mysql",3306, NULL, 0))   //这里的地址,用户名,密码,端口可以根据自己本地的情况更改
    68     {
    69         cout << "mysql_real_connect() succeed" << endl;
    70     }
    71     else {
    72         cout << "mysql_real_connect() failed" << endl;
    73         return -1;
    74     }
    75 
    76     return 0;
    77 }

    如果能运行,OK!后面的不用看了。

     

    问题

    无法解析的外部符号 _mysql_real_connect...

    方法一:由于VS建立的项目默认为WIN32 项目,需将平台改为64。设置如下:

    (1) 项目—》属性—》配置属性—》配置管理器—》活动解决方案平台,下拉选新建,出现一个新的对号框,在键入选择新平台中选择X64,如下图所示:


    (2)不是将C:\mysql\mysql-8.0.16-winx64\lib(安装MySql下的lib文件夹)中的libmysql.dll拷到项目下的Debug文件夹中,而是拷到项目下x64\Debug中(或者C:\Windows\System32中)。重启(必需的)。完毕。。  

    没有第二步会提示缺少“libmysql.dll”。

     

     

    参考链接:

    1. c++连接mysql并提示“无法解析的外部符号 _mysql_server_init@12”解决方法

    2. VS中MFC连接MySQL由于系统不同位(32/64)引起的错误:无法解析的外部符号 _mysql_init@4、_mysql_query 

    3. 测试代码

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-6-17 07:30 , Processed in 0.071477 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表