vc mysql init 崩溃_VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法...

在Windows 8.1上使用VC++6.0开发32位程序,尝试连接64位MySQL服务器时遇到错误"libmysql.lib : fatal error LNK1113: invalid machine type"。解决方法是下载32位MySQL的zip包,将lib目录添加到VC的库目录,并替换64位libmysql.lib,确保编译链接32位库。
摘要由CSDN通过智能技术生成

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\,如图:

500fe866a0f84d50c3a9dcf426098c20.png

可以看到我这个是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==mysql_library_init(0,NULL,NULL))

{

cout<

}else{

cout<

return -1;

}

pause();

if(NULL!=mysql_init(&mysql))

{

cout<

}else{

cout<

return -1;

}

pause();

if(0==mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"gb2312"))

{

cout<

}else{

cout<

return -1;

}

pause();

if(NULL!=mysql_real_connect(&mysql,"localhost","myuser","123456","student_db",3306,NULL,0))

{

cout<

}else{

cout<

return -1;

}

pause();

string sql;

sql="select * from sgroup";

MYSQL_RES *result=NULL;

if(0==mysql_query(&mysql,sql.c_str()))

{

cout<

result=mysql_store_result(&mysql);

int rowcount=mysql_num_rows(result);

cout<

unsigned int fieldcount=mysql_num_fields(result);

MYSQL_FIELD *field=NULL;

for(unsigned int i=0;i

{

field=mysql_fetch_field_direct(result,i);

cout<name<

}

cout<

MYSQL_ROW row=NULL;

row=mysql_fetch_row(result);

while(NULL!=row)

{

for(int i=0;i

cout<

}

cout<

row=mysql_fetch_row(result);

}

}else{

cout<

mysql_close(&mysql);

return -1;

}

pause();

/*sql="drop table user_info";

if(0==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;

}

95ce17136d8857e897818009a20561f0.png

原文:http://www.cnblogs.com/jycboy/p/5170751.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值