一段代码编译后,出现这些信息: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共同使用,会出现链接报错,不知道,有没有人也遇到过这种问题,指点一二。
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共同使用,会出现链接报错,不知道,有没有人也遇到过这种问题,指点一二。
#include "winsock2.h"
#paragma comment(lib,"mysql.lib");