工具:vs2012,mysql5.0
操作系统:win64位
首先,打开vs2012新建一个c++工程(空工程就好,自己在源文件中添加一个cpp文件,用于写连接的代码),如下图所示:
设置一些引用文件的环境变量,点击项目->属性->vc++目录
然后“include目录”(包含目录)那把“C:\ProgramFiles\MySQL\MySQL Server 5.5\include”给加进来
再然后“lib目录”(库目录)那里把“C:\ProgramFiles\MySQL\MySQL Server 5.0\lib”和“C:\ProgramFiles\MySQL\MySQL Server 5.0\lib\debug”也一起加进来。以上三个文件在mysql 的安装目录下(默认在C:\ProgramFiles,或有不同)
解释一下以上三个文件的作用:
在访问数据库时要调用mysql的头文件,在其安装目录的include文件夹里;
在编译和连接时:(转)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够 了。 在开发和调试阶段,当然最好都有。 一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll 文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那 么这个lib文件是静态编译出来的,索引和实现都在其中。静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺 点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。
1. 编译是通过静态链接库(lib)去找到接口的。
2. #pragma comment (lib, "libmysql.lib")
#pragma comment (lib, "mysqlclient.lib")
基本上做完以后的工作就可以连接mysql数据库了!
测试代码如下:
#include <stdio.h> #include <string.h> #include <algorithm> #include <iostream> #include "winsock.h" #include "mysql.h" using namespace std; #pragma comment (lib, "libmysql.lib") #pragma comment (lib, "mysqlclient.lib") int main() { //connectionparams char *host = "localhost"; char *user = "root";//mysql的用户名 char *pass = "123456";//你的mysql服务器密码 char *db = "MySql"; unsigned int port = 3306; //server port MYSQL *sock; sock=mysql_init(0); if(sock &&mysql_real_connect(sock,host,user,pass,db,0,NULL,0)) { cout<<"connect mysqlsucceed!"<<endl; } else { cout<<"I'm sorry to tell you that you wrong!"<<endl; } getchar(); //input 1 or 2 or 3 return 0; }
error LNK2019: 无法解析的外部符号 _mysql_real_connect@32,该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 _mysql_query@8,该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 _mysql_init@4,该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 _mysql_close@4,该符号在函数 _main 中被引用
等无法解析外部符号的错误。
点击项目->属性->配置管理器
活动解决方案平台,下拉选新建,出现一个新的对号框,在键入选择新平台中选择X64
然后重新编译就OK了
参考:http://blog.csdn.net/w174504744/article/details/7884997