libcmt.lib和msvcrtd.lib的冲突问题
由 hubdog 于 星期三, 2010-01-13 17:41 发表
今天在编译一个程序时,发生了下面的错误。
libcmt.lib(sprintf.obj) : error LNK2005: _sprintf already defined in msvcrtd.lib(MSVCR80D.dll)
调查发现,编译程序中调用的DLL是使用动态链接进行编译的,但是这个程序又链接了一个使用静态链接的库,这两个库恰好又同时用到了sprintf这个函数,这就导致了命名冲突的问题,将两个库都使用动态链接后就改好了这个问题。
MSDN上有一篇文章讲了静态和动态链接的区别。
http://msdn.microsoft.com/en-us/library/abx4dbyh%28VS.80%29.aspx