在Visual Studio 10中链接MySQL库

时间:2011-11-16 17:23:56

标签: c++ mysql visual-studio linker

我正在尝试在Visual Studio 2010中使用MySQL。 我添加了MySQL include目录:

  

C:\ Program Files \ MySQL \ MySQL Server 5.5 \ include

...到VC ++目录下的项目属性 - >包括目录。

并补充道:

  

C:\ Program Files \ MySQL \ MySQL Server 5.5 \ lib

&安培;

  

C:\ Program Files \ MySQL \ MySQL Server 5.5 \ lib \ debug

...到VC ++目录 - >图书馆目录。

它在几天前工作,但现在已停止处理以下错误:

  

致命错误LNK1120:7个未解析的外部

任何人都可以帮忙,谢谢。

更新: 从Include driectories中删除了C:\ Program Files \ MySQL \ MySQL Server 5.5 \ lib \ debug目录,然后将以下lib文件添加到Linker - >其他依赖项:

C:\ Program Files \ MySQL \ MySQL Server 5.5 \ lib \ mysqlclient.lib C:\ Program Files \ MySQL \ MySQL Server 5.5 \ lib \ libmysql.lib

这会产生以下错误:

  

1> LIBCMT.lib(invarg.obj):错误LNK2005:   __set_invalid_parameter_handler已在MSVCRTD.lib中定义(MSVCR100D.dll)1> LIBCMT.lib(invarg.obj):错误LNK2005:   __invoke_watson已在MSVCRTD.lib中定义(MSVCR100D.dll)1> LIBCMT.lib(setlocal.obj):错误LNK2005:__ configthreadlocale   已在MSVCRTD.lib中定义(MSVCR100D.dll)   1> LIBCMT.lib(crt0dat.obj):错误LNK2005:__ initit_e已经   在MSVCRTD.lib(MSVCR100D.dll)1> LIBCMT.lib(crt0dat.obj)中定义:   错误LNK2005:_exit已在MSVCRTD.lib中定义(MSVCR100D.dll)   1> LIBCMT.lib(crt0dat.obj):错误LNK2005:__ exit已在   MSVCRTD.lib(MSVCR100D.dll)1> LIBCMT.lib(crt0dat.obj):错误LNK2005:   __cexit已在MSVCRTD.lib(MSVCR100D.dll)中定义1> LIBCMT.lib(crt0dat.obj):错误LNK2005:__amsg_exit已定义   在MSVCRTD.lib(MSVCR100D.dll)1> LIBCMT.lib(dosmap.obj):错误   LNK2005:__ errno已在MSVCRTD.lib中定义(MSVCR100D.dll)   1> LIBCMT.lib( file.obj):错误LNK2005:_ _iob_func已定义   在MSVCRTD.lib(MSVCR100D.dll)1> LIBCMT.lib(mlock.obj):错误LNK2005:   __unlock已在MSVCRTD.lib中定义(MSVCR100D.dll)1> LIBCMT.lib(mlock.obj):错误LNK2005:__lock已在   MSVCRTD.lib(MSVCR100D.dll)1> LIBCMT.lib(winxfltr.obj):错误LNK2005:   __XcptFilter已在MSVCRTD.lib(MSVCR100D.dll)中定义1> LIBCMT.lib(crt0.obj):错误LNK2005:_mainCRTStartup已经   在MSVCRTD.lib(crtexe.obj)中定义1> LIBCMT.lib(hooks.obj):错误   LNK2005:“void __cdecl terminate(void)”(?终止@@ YAXXZ)已经存在   在MSVCRTD.lib中定义(MSVCR100D.dll)1> LIBCMT.lib(winsig.obj):错误   LNK2005:信号已在MSVCRTD.lib中定义(MSVCR100D.dll)   1> LIBCMT.lib(crt0init.obj):错误LNK2005:_ _xi_a已在   MSVCRTD.lib(cinitexe.obj)1> LIBCMT.lib(crt0init.obj):错误LNK2005:   ___xi_z已在MSVCRTD.lib中定义(cinitexe.obj)1> LIBCMT.lib(crt0init.obj):错误LNK2005:___ xc_a已在   MSVCRTD.lib(cinitexe.obj)1> LIBCMT.lib(crt0init.obj):错误LNK2005:   ___xc_z已在MSVCRTD.lib中定义(cinitexe.obj)1> LIBCMT.lib(fflush.obj):错误LNK2005:_fflush已在   MSVCRTD.lib(MSVCR100D.dll)1> LIBCMT.lib(atox.obj):错误LNK2005:    atoi已在MSVCRTD.lib(MSVCR100D.dll)1> LIBCMT.lib(errmode.obj)中定义:错误LNK2005:_ _set_app_type已经   在MSVCRTD.lib(MSVCR100D.dll)1> LIBCMT.lib(strtol.obj)中定义:错误   LNK2005:_strtol已在MSVCRTD.lib中定义(MSVCR100D.dll)   1> LIBCMT.lib(strtol.obj):错误LNK2005:_strtoul已在   MSVCRTD.lib(MSVCR100D.dll)1> LIBCMT.lib(strnicmp.obj):错误LNK2005:   __strnicmp已在MSVCRTD.lib(MSVCR100D.dll)中定义1> LIBCMT.lib(osfinfo.obj):错误LNK2005:__ get_osfhandle已经   在MSVCRTD.lib(MSVCR100D.dll)1> LIBCMT.lib(osfinfo.obj)中定义:   错误LNK2005:已经定义了__open_osfhandle   MSVCRTD.lib(MSVCR100D.dll)1> LINK:警告LNK4098:defaultlib   'MSVCRTD'与使用其他libs冲突;使用/ NODEFAULTLIB:库   1> LINK:警告LNK4098:defaultlib'LIBCMT'与使用冲突   其他图书馆;使用/ NODEFAULTLIB:库

1 个答案:

答案 0 :(得分:0)

这里的问题是我试图在我的本地PC上使用Visual Studio来创建和测试目标为远程Linux系统的C ++程序。 我之所以这样做,是因为我喜欢VS调试,但最终导致了更多的麻烦。

相反,我现在开始在Linux服务器上使用GDB,它运行良好。 它的GUI有点少,但它可以工作。

结果是花费更多的时间编写更少的时间来摆弄下拉菜单中的设置。