VC连接MySQL的配置过程在上一篇博文中,不过当你设置好,以为万事大吉的时候,运行却出现这个错误:libmysql.lib : fatal error LNK1113: invalid machine type。无效的机器类型,真的是很让人捉急。
发生这个错误的原因是,我在win8.1上安装的是64bit的mysql服务器,而我编译32位的VC程序,连接的是64位的libmysql.lib库,所以会产生 “无效的机器类型(invalid machine type)”的错误提示。
对于这个“error LNK1113”错误的解决方案是:
下载32位的mysql的zip包,大概100多M的那个。解压出来,把lib目录按照,第4步定位lib。这样的话,我们的32位程序编译的时候,链接的就是32位的库,就不会出现上面的链接错误了。也不必换到xp系统上去操作了。
环境说明:
操作系统:windows 8.1
开发工具:VC++6.0
开发的exe:32位程序
数据库服务器:64位的mysql-5.5
引用的数据库lib:32位的mysql-5.7.10-win32.zip(320M)的lib文件夹。
步骤如下:
1. 到官网www.mysql.com下载MySQL安装包:
当然你也可以下载安装mysql*.msi。
2. 安装mysql,在安装过程中如(如果是.msi安装),一定要选上C Include Files / Lib Files,这样在安装后才能在mysql的安装文件夹中找到include和lib文件夹,这些文件夹将在下面的操作用会用到。
3. 把D:\Mysql32\mysql-5.7.10-win32\lib下的libmysql.dll复制并拷贝到C:\WINDOWS\system32下。(这一步我没有做,一样可以编译通过,我是在WIN8.1下验证的,不知在XP或是win-NT中是否需要这一步)。
4. 这也是最关键的一步!打开:工具->选项菜单,找到“目录”标签,可以看到有一个:“显示目录为”的下拉框,选择Library files选项,在其中加入: 【32位的mysql zip解压文件夹】\MySQLServer 5.7\lib\,如图:
可以看到我这个是32位的lib
5.编译运行,成功。
只需要用32位的lib替换64位的lib,这样的话,我们的32位程序编译的时候,链接的就是32位的库,就不会出现上面的链接错误了。
解决方法还是很简单的,就是下载zip包太慢啦。。。。
// test.cpp : Defines the entry point for the console application.
//
#include
#include
#include "StdAfx.h"
#include
#include
#include
#include
using namespace std;
//#pragma comment (lib,"ws2_32.lib")
//#pragma comment(lib,"libmysql.lib")
//不需要单步调试的就注释掉
//#define STEPBYSTEP
void pause(){
#ifdef STEPBYSTEP
system("pause");
#endif
}
void writeToFile(const char *s)
{
FILE *fp=fopen("info.txt","rw");
fprintf(fp,s);
fclose(fp);
}
/* int main()
{
MYSQL mysql;
mysql_init(&mysql); //初始化mysql结构
if(!mysql_real_connect(&mysql,"localhost","myuser","123456","student_db",3306,NULL,0))
printf("\n连接数据库时发生错误!\n");
else
printf("\n连接数据库成功!\n");
mysql_close(&mysql); //释放数据库
return 0;
}*/
int main(int argc, char* argv[]){
cout<
pause();
MYSQL mysql;
if(0&#61;&#61;mysql_library_init(0,NULL,NULL))
{
cout<
}else{
cout<
return -1;
}
pause();
if(NULL!&#61;mysql_init(&mysql))
{
cout<
}else{
cout<
return -1;
}
pause();
if(0&#61;&#61;mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"gb2312"))
{
cout<
}else{
cout<
return -1;
}
pause();
if(NULL!&#61;mysql_real_connect(&mysql,"localhost","myuser","123456","student_db",3306,NULL,0))
{
cout<
}else{
cout<
return -1;
}
pause();
string sql;
sql&#61;"select * from sgroup";
MYSQL_RES *result&#61;NULL;
if(0&#61;&#61;mysql_query(&mysql,sql.c_str()))
{
cout<
result&#61;mysql_store_result(&mysql);
int rowcount&#61;mysql_num_rows(result);
cout<
unsigned int fieldcount&#61;mysql_num_fields(result);
MYSQL_FIELD *field&#61;NULL;
for(unsigned int i&#61;0;i
{
field&#61;mysql_fetch_field_direct(result,i);
cout}
cout<
MYSQL_ROW row&#61;NULL;
row&#61;mysql_fetch_row(result);
while(NULL!&#61;row)
{
for(int i&#61;0;i
cout<
}
cout<
row&#61;mysql_fetch_row(result);
}
}else{
cout<
mysql_close(&mysql);
return -1;
}
pause();
/*sql&#61;"drop table user_info";
if(0&#61;&#61;mysql_query(&mysql,sql.c_str()))
{
cout<
}else{
cout<
mysql_close(&mysql);
return -1;
} */
mysql_free_result(result);
mysql_close(&mysql);
mysql_server_end();
system("pause");
return 0;
}
原文&#xff1a;http://www.cnblogs.com/jycboy/p/5170751.html