gpt4 book ai didi

c++ - LNK2005 - ATL 基类符号已定义 - 根本原因是什么?

转载 作者:行者123 更新时间:2023-11-28 08:19:22 25 4
gpt4 key购买 nike

我是 Visual C++ 的新手,但之前使用过 C++。我已经花了几天时间解决这个问题,所以非常感谢任何帮助。

我继承了一个重要的 VC6 代码库,我正在尝试编译并链接到更新的编译器。底层dll项目正在编译和链接,exe项目正在编译但没有链接。我收到类似这样的错误...

MyBaseLib.lib(MyBaseLib.dll) : error LNK2005: "public: __thiscall ATL::CWindowImplRoot<class ATL::CWindow>::CWindowImplRoot<class ATL::CWindow>(void)" (??0?$CWindowImplRoot@VCWindow@ATL@@@ATL@@QAE@XZ) already defined in ClassInMyExe.obj

我注意到 exe 和有问题的 MyBaseLib.dll 中都有使用 ATL 的类,特别是从 CDialogImpl<..> 继承的类。我已经引用了类似的问题,但我没有看到答案 - 我不认为它像错误地插入头文件中的类定义一样简单。

我在 VS2010 和 VS2005 环境中都遇到相同的错误。

最佳答案

确保您使用的所有库都是使用相同的编译器和相同的 c|cpp 运行时库(/MT 或/MD)编译的。如果还剩下一些旧库,则可能会发生这种情况。

关于c++ - LNK2005 - ATL 基类符号已定义 - 根本原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6519124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com