简体   繁体   English

在Visual Studio 10中链接MySQL库

[英]Linking MySQL libraries in Visual Studio 10

I'm trying to use MySQL with Visual Studio 2010. I've added the MySQL include directory: 我试图将MySQL与Visual Studio 2010结合使用。我已经添加了MySQL包含目录:

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

...to the project properties under VC++ Directories -> Include Directories. ...到VC ++目录下的项目属性->包括目录。

And added: 并添加:

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

&

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

...to VC++ Directories -> Library Directories. ...到VC ++目录->库目录。

It was working a couple of days ago, but has now stopped working with the following error: 几天前它已经在工作,但是现在由于以下错误而停止工作:

fatal error LNK1120: 7 unresolved externals 严重错误LNK1120:7个未解决的外部零件

Can anyone help, thanks. 谁能帮忙,谢谢。

UPDATE: Removed the C:\\Program Files\\MySQL\\MySQL Server 5.5\\lib\\debug directory from the Include driectories and then added the following lib files to the Linker -> additional dependencies: 更新:从包括目录中删除了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 C:\\ Program Files \\ MySQL \\ MySQL Server 5.5 \\ lib \\ mysqlclient.lib C:\\ Program Files \\ MySQL \\ MySQL \\ MySQL Server 5.5 \\ lib \\ libmysql.lib

This genertaes the following errors: 这会产生以下错误:

1>LIBCMT.lib(invarg.obj) : error LNK2005: __set_invalid_parameter_handler already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(setlocal.obj) : error LNK2005: __configthreadlocale already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __initterm_e already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __exit already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __cexit already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __amsg_exit already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(dosmap.obj) : error LNK2005: __errno already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib( file.obj) : error LNK2005: _ _iob_func already defined in MSVCRT 1> LIBCMT.lib(invarg.obj):错误LNK2005:MSVCRTD.lib(MSVCR100D.dll)中已定义__set_invalid_parameter_handler 1> LIBCMT.lib(invarg.obj):错误LNK2005:MSVCRTD.lib(MSVCR100D)中已定义__invoke_watson。 dll)1> LIBCMT.lib(setlocal.obj):错误LNK2005:__configthreadlocale已在MSVCRTD.lib(MSVCR100D.dll)中定义:错误LNK2005:__initterm_e已在MSVCRTD.lib( MSVCR100D.dll)1> LIBCMT.lib(crt0dat.obj):错误LNK2005:_exit已在MSVCRTD.lib(MSVCR100D.dll)中定义1> LIBCMT.lib(crt0dat.obj):错误LNK2005:__退出已在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在MSVCRT中已定义 D.lib(MSVCR100D.dll) 1>LIBCMT.lib(mlock.obj) : error LNK2005: __unlock already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(mlock.obj) : error LNK2005: __lock already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(crt0.obj) : error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj) 1>LIBCMT.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(winsig.obj) : error LNK2005: signal already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(crt0init.obj) : error LNK2005: _ _xi_a already defined in MSVCRTD.lib(cinitexe.obj) 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in MSVCRTD.lib(cinitexe.obj) 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in MSVCRTD.lib(cinitexe.obj) 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z already def D.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:MSVCRTD.lib(MSVCR100D.dll)中已定义的__XcptFilter 1> LIBCMT.lib(crt0.obj):错误LNK2005: MSVCRTD.lib(crtexe.obj)中已定义的_mainCRTStartup 1> LIBCMT.lib(hooks.obj):错误LNK2005:MSVCRTD.lib(MSVCR100D)中已定义的“ void __cdecl终止(void)”(?terminate @@ YAXXZ)。 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已经定义 ined in MSVCRTD.lib(cinitexe.obj) 1>LIBCMT.lib(fflush.obj) : error LNK2005: _fflush already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(atox.obj) : error LNK2005: atoi already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(errmode.obj) : error LNK2005: _ _set_app_type already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(strtol.obj) : error LNK2005: _strtol already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(strtol.obj) : error LNK2005: _strtoul already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(strnicmp.obj) : error LNK2005: __strnicmp already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(osfinfo.obj) : error LNK2005: __get_osfhandle already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LIBCMT.lib(osfinfo.obj) : error LNK2005: __open_osfhandle already defined in MSVCRTD.lib(MSVCR100D.dll) 1>LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; 在MSVCRTD.lib(cinitexe.obj)中插入1> LIBCMT.lib(fflush.obj):错误LNK2005:_fflush已在MSVCRTD.lib(MSVCR100D.dll)中定义1> LIBCMT.lib(atox.obj):错误LNK2005: 在MSVCRTD.lib(MSVCR100D.dll)1> LIBCMT.lib(errmode.obj)中已定义的atoi:错误LNK2005:在MSVCRTD.lib(MSVCR100D.dll)1> LIBCMT.lib(strtol.obj)中已定义的_ _set_app_type:错误LNK2005:_strtol已在MSVCRTD.lib(MSVCR100D.dll)中定义> 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:MSVCRTD.lib(MSVCR100D.dll)中已定义的__open_osfhandle 1> LINK:警告LNK4098:defaultlib'MSVCRTD'与使用其他库冲突; use /NODEFAULTLIB:library 1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; 使用/ NODEFAULTLIB:library 1> LINK:警告LNK4098:defaultlib'LIBCMT'与使用其他库冲突; use /NODEFAULTLIB:library 使用/ NODEFAULTLIB:library

The problem here was that I was trying to use Visual Studio on my local PC to create and test C++ programs destined for a remote Linux system. 这里的问题是我试图在本地PC上使用Visual Studio创建和测试用于远程Linux系统的C ++程序。 I did this because I liked the VS debugging but it ended up causing more trouble that it's worth. 我之所以这样做,是因为我喜欢VS调试,但最终导致了更多值得的麻烦。

Instead I've now started using GDB over on the linux server and it is working well. 相反,我现在已经开始在Linux服务器上使用GDB,并且运行良好。 It's a bit less GUI but it works. 它的GUI少一些,但可以使用。

The result is more time programming less time fiddling around with settings in drop down menus. 结果是可以用更多的时间进行编程,而减少花费在下拉菜单中的时间。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM