Visual Studio 2012 C++ Mysql LNK2019 error
来源:互联网 发布:saas云数据安全 编辑:程序博客网 时间:2024/06/06 05:48
最近学习Socket编程,想做一个客户端输入用户名密码提交登陆,服务器端连接数据库验证用户信息,所以就下载了Mysql。
下载就简单了,直接去官网。
配置似乎也不难。正常来说不需要复制什么文件到哪里。上图说明吧。
1.添加mysql.h
对着项目右键,选择properties
双击C/C++,选择General,看到Additional Include Directories
编辑
点击文件夹的按钮
点击...按钮
进去之后选择到自己安装mysql的位置\mysql server5.5\include,比如我默认安装在C:\Program files\mysql,那我的路径就是
然后OK,第一步完成了,这个工程会自动检测这个路径下的头文件,就是说可以直接写#include <mysql.h>
如果不想每次都手动做这些事,可以直接把这个路径下的所有文件,保存到Visual studio下VC路径下的include文件夹里面,这个是默认检测的路径,比如我的可以复制到C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\
2.添加libmysql.lib
到linker下的General,看到Additional Library Directories。同样的方式,不过这次是添加另外一个文件夹lib,lib文件夹跟include文件夹在同一个文件夹mysql server 5.5里面。当然了,版本号可能每个人不一样。
添加完了之后点左边linker下的input
手动在里面添加libmysql.lib; 分号记得加
其实这步也有简单的方法,而且可能更好。
直接把libmysql.lib这个文件拉到solution explorer正在编辑的工程下,如图
然后在程序里面加入#pragma comment(lib,"libmysql")。
在网上看到大部分教程说到 这里就没了,说是能够正常运行了。。。其实可能不是的。。我写好了测试代码之后,编译出现如下的错误,其实不是代码问题。
网上搜error LNK2019,出现的结果不少。。但似乎没有能解决我的问题的。。
正常来说,加入了需要的头文件,连接了lib,程序应该正常编译才对,但这里就是不行。。。。折腾了好几个小时,最后才想起系统是64位的,安装的mysql也是64位的,但写的程序是在win32,也就是32位的平台下编译。。。当然会出错了。。如图:
看到Platform win32没?
选择旁边的Configuration manager,出现
这里
选择new,出现
点击ARM这个下拉,出现
选择X64,一路OK,然后重新编译,就没有错误了。
一运行,又报错,说是少了libmysql.dll。这个文件就在mysql\mysql server 5.5\lib 里面。把它复制到
C:\Users\Undead\Documents\Visual Studio 2012\Projects\Test\x64\Debug(这个路径是你的工程所在路径\x64\Debug) 我特意建了一个名叫Test的工程来写这篇博客。
体力活。。到这里应该没什么问题了。我再把一个简单的测试程序写下来吧。
#include "stdafx.h"#include <WinSock2.h>//这个似乎要在mysql.h之前包含,因为mysql用到了socket机制#pragma comment(lib,"wsock32")#include <mysql.h>#pragma comment(lib,"libmysql")#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){MYSQL myCon;MYSQL_ROW sql_row;MYSQL_FIELD *fd;MYSQL_RES * result = NULL;char column[32][32];int res; mysql_init(&myCon);if(mysql_real_connect(&myCon,"localhost","db_user","db_password","db_name",3306,NULL,0)){ //db_user,db_password,db_name根据自己情况填写,user默认安装的时候是rootcout << "Connect successful" << endl; //db_name 是选择的数据库名字,默认安装完有一个test数据库res = mysql_query(&myCon,"select * from table_name");//要先往数据库里面建立一个新的table,然后把table_name改一下,才能用;不然应该会显示query failif (!res){result = mysql_store_result(&myCon);if(result) { int i,j; cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl; for(i=0;fd=mysql_fetch_field(result);i++) { strcpy_s(column[i],fd->name); } j=mysql_num_fields(result); for(i=0;i<j;i++) { printf("%s\t",column[i]); } printf("\n"); while(sql_row=mysql_fetch_row(result)) { for(i=0;i<j;i++) { printf("%s\n",sql_row[i]); } cout << endl; } } }elsecout << "query sql failed" << endl;}elsecout << "connect failed \n" ;if(result != NULL)mysql_free_result(result);mysql_close(&myCon);return 0;}
体力活。。体力活。。不知道对大家有没有帮助。。
- Visual Studio 2012 C++ Mysql LNK2019 error
- Visual Studio Opencv error LNK2019解决办法
- Visual Studio 2013 C++ 调用mysql错误 error LNK2019: 无法解析的外部符号 _mysql_init@4
- Visual Studio---error LNK2001(或者error LNK2019)
- Visual Studio编译报错:error LNK2019和error LNK1120
- Visual Studio error LNK2019: 无法解析的外部符号
- Visual Studio 2008 error LNK2019 错误解决办法 ( _tWinMain 12月25日)
- visual studio 2012 error: LINK1318
- Visual Studio 2010 C/C++连接mysql
- 如何解决VS2010 MySql Connect C 链接mysql:error LNK2019: 无法解析外部符号的问题
- Visual Studio 2012 编译C
- Visual Studio Watch Error
- Visual Studio:error MSB8020
- Visual Studio:error MSB8020
- Visual Studio:error MSB8020
- Visual Studio:error MSB8020
- Visual Studio:error MSB8020
- Visual Studio:error MSB8020
- 解决BlackBerry 9900模拟器显示屏花屏的问题。
- Servlet Filter(过滤器)----->张国亮总结心得第一季
- 多线程篇
- AdaBoost算法程序介绍说明
- c++ primer multimap
- Visual Studio 2012 C++ Mysql LNK2019 error
- java中继承与多态典型实例
- Tomcat6下配置局部数据源及使用
- Servlet Filter(过滤器) --->张国亮总结心得第二季
- 任务栏显示程序详解
- linux常用命令罗列记忆(仅供自己参考
- MyBatis的动态SQL详解
- sizeof求struct各种组合的长度,以及指针,字符数组的长度
- grub、lilo、elilo 使用的vga参数