一段代码编译后,出现这些信息:Linking... 
LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library 
mysqlclient.lib(mf_loadpath.obj) : error LNK2001: unresolved external symbol ___security_cookie 
mysqlclient.lib(md2.obj) : error LNK2001: unresolved external symbol ___security_cookie 
mysqlclient.lib(trees.obj) : error LNK2001: unresolved external symbol ___security_cookie 
mysqlclient.lib(inftrees.obj) : error LNK2001: unresolved external symbol ___security_cookie 
mysqlclient.lib(asn.obj) : error LNK2001: unresolved external symbol ___security_cookie 
……… 
……… 
……… 
……… 
mysqlclient.lib(crypto_wrapper.obj) : error LNK2001: unresolved external symbol "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) 
mysqlclient.lib(yassl_imp.obj) : error LNK2001: unresolved external symbol "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) 
mysqlclient.lib(my_init.obj) : error LNK2001: unresolved external symbol __aulldvrm 
mysqlclient.lib(my_time.obj) : error LNK2001: unresolved external symbol __aulldvrm 
mysqlclient.lib(ctype-simple.obj) : error LNK2001: unresolved external symbol __aulldvrm 
mysqlclient.lib(ctype-ucs2.obj) : error LNK2001: unresolved external symbol __aulldvrm 
mysqlclient.lib(integer.obj) : error LNK2001: unresolved external symbol __aligned_malloc 
mysqlclient.lib(integer.obj) : error LNK2001: unresolved external symbol __aligned_free 
../../myicqd.exe : fatal error LNK1120: 8 unresolved externals 
Error executing link.exe. myicqd.exe - 109 error(s), 1 warning(s) 
关于这个问题,我在网上搜索,发现了《在Microsoft Visual C++ 2005 中使用MySQL 5 》一文,其中写道 

  2. Mysql 5的获取与安装 
     由于MySQL 5的windows 版本是用Microsoft Visual C++ 2003 (7.1)来编译的,其 
动态链接库文件(libmysql.dl),静态库文件(libmysql.lib,strings.lib等)都不能直接 
用于Microsoft Visual C++ 2005 (8.0),因此必须要把MySQL 5及其对应的源代码都下 
载下来,自行编译其中的库文件才能在Microsoft Visual C++ 2005中使用。 


3.开发环境配置 
    Mysql-5.0.37-win32自带的lib文件和libmysql.dll不是用Microsoft Visual  
C+++ 2005编译出来的,直接使用的话会报链接错误,因此我们必须得自行编译相应的li 
b文件和dll文件。 


    3.1 MySQL 5 库文件编译 
    解压前面下载的Mysql-5.0.37-win-src,用Microsoft Visual C++ 2005打开mysql.s 
ln,进行项目转化。 
1>   设置libmysql为启动项目,选择项目类型为win32的Debug类型,然后进行编译。 
2>   设置mysqlclient为启动项目,项目类型为Win32的Debug类型,然后编译。 
3>   在上两步的编译成功完成后,源代码所在目录下的lib_debug下将有新生产的libmys 
ql.dll、libmysql.lib、mysqlclient.lib、mysys.lib、regex.lib、strings.lib、zli 
b.lib等库文件,检查其文件生成日期,确认是用Microsoft Visual C++ 2005新生成的 
,然后用其替换MySQL 5的安装目录下的lib\debug文件夹下的对应文件。该文件夹默认 
安装是C:\Program Files\MySQL\MySQL Server 5.0\lib\debug。 
"    这篇网文的大概意思是,MySQL 5是用VC.net 2003 编译的,而作者用的是VC 2005 ,因此需要下载源码进行重新编译,否则就会像我一样,报LNK2001 链接错误。 
    而我用的是MySQL 5.1  ,VC 6.0,我按照网文说的方法,重新编译MySQL,覆盖原库文件。然后再运行编译源程序,编译运行通过,不会再报链接错误了,但是编译出来的程序,却无法实现预定功能,此时不知是代码有问题,还是换了库文件导致出现此问题。 
   VC 6.0 与 MySQL 5共同使用,会出现链接报错,不知道,有没有人也遇到过这种问题,指点一二。

解决方案 »

  1.   

    你的mysql的动态链接库没有连接好啊,注意加上这两句
    #include "winsock2.h"
    #paragma comment(lib,"mysql.lib");
      

  2.   

    不会吧,我就直接用libmysql.dll   libmysql.lib,没有任何问题啊,我是VS2005和VS2008,VC6不知道,没试过这文章说的有点问题吧,如果照他说的那样,不同版本连接器出来的东西不能一起使用,那么XP的很多DLL都是VS2003链接出来的,岂不是我们用VS2005和2008编译的东西都运行不了?是不是有点滑稽?