如何在Visual Studio(LNK2005)中解决此链接错误?

Cut*_*ute 4 visual-studio-2005 crt msvcrt visual-c++

我一直有以下形式的链接器错误:

libcmtd.dll msvmrtd.dll 已经定义了一些元素(例如:_mkdir) ...

我不知道如何解决它们.

这是一个完整的错误消息:

private:__ thiscall type_info :: type_info(class type_info const&)"(?? 0type_info @@ AAE @ ABV0 @@ Z)已在LIBCMTD.lib(typinfo.obj)中定义

MSVCRTD.lib(ti_inst.obj):错误LNK2005:已在LIBCMTD.lib中定义的"private:class type_info&__thiscall type_info :: operator =(class type_info const&)"(?? 4type_info @@ AAEAAV0 @ ABV0 @@ Z) (typinfo.obj)

你能帮我解决这个问题吗?

rlb*_*ond 8

检查一下:

  1. 你的头文件是否受到保护.即他们有#ifndef卫兵.

  2. 您是否在没有inline关键字的标题中定义(非模板)函数.这让很多东西搞砸了.

  3. 您是否尝试在.cpp文件中定义模板.所有模板定义都需要在标题中.

请发布一些代码和确切的错误文本!

  • 干杯为第二个:) (2认同)

pax*_*blo 4

您的问题是您正在链接两个提供相同符号的文件。

您尚未提供真正的错误消息,因此我们无法准确告诉您问题是什么,但很可能您正在链接来自两个不同版本的 Visual Studio 的库。

还可以通过搜索网络找到可用的解决方案(我假设您这样做了,但只是错过了相关文章:-),建议您可以通过将项目选项从 更改为 来解决问题,"Multi-threaded Debug(/MTd)""Multi-threaded Debug DLL (/MTD)"我还没有研究过这一点。

请发布完整的错误,以便我们提供更有针对性的帮助。