我在VC(是MFC)里调用mysql时出现这样的问题:
编译出错代码mysql_com.h文件里的,代码出错的地方如下,
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY)
  Vio* vio;
  unsigned char *buff,*buff_end,*write_pos,*read_pos;
  my_socket fd; /* For Perl DBI/dbd */         //第184行
  unsigned long max_packet,max_packet_size;
  unsigned int pkt_nr,compress_pkt_nr;
  unsigned int write_timeout, read_timeout, retry_count;
  int fcntl;......struct sockaddr;
int my_connect(my_socket s, const struct sockaddr *name, unsigned int namelen,
       unsigned int timeout);// 第354行struct rand_struct {
  unsigned long seed1,seed2,max_value;
  double max_value_dbl;
};下面是编译时提示的具体内容:
Compiling...
StdAfx.cpp
c:\program files\mysql\mysql server 5.0\include\mysql_com.h(184) : error C2146: syntax error : missing ';' before identifier 'fd'
c:\program files\mysql\mysql server 5.0\include\mysql_com.h(184) : error C2501: 'SOCKET' : missing storage-class or type specifiers
c:\program files\mysql\mysql server 5.0\include\mysql_com.h(184) : error C2501: 'fd' : missing storage-class or type specifiers
c:\program files\mysql\mysql server 5.0\include\mysql_com.h(354) : error C2065: 'SOCKET' : undeclared identifier
c:\program files\mysql\mysql server 5.0\include\mysql_com.h(354) : error C2146: syntax error : missing ')' before identifier 's'
c:\program files\mysql\mysql server 5.0\include\mysql_com.h(355) : error C2059: syntax error : ')'
执行 cl.exe 时出错.MySqlDemo.exe - 1 error(s), 0 warning(s)
需要说明的是,我在stdAfx.h里添加了
#include <afxsock.h>
#include <mysql.h>
#include <stdio.h>
#include "winsock.h"
#pragma comment(lib,"libmySQL.lib") // MFC socket extensions
工作区里我也添加了MySQL的include路径,libmysql.lib,就是网上搜的添加那三处,在这样的情况下问题依旧存在,问题出现得很偏,都不知从哪着手了。