我有一个关于LNK2005 &MSVC 2015 (Qt 5.12.6)上的LNK1169错误
我的错误是:Core.lib(Core.dll) : error LNK2005: "public: __cdecl QMap<int,double>::~QMap<int,double>(void)" (??1?$QMap@HN@@QEAA@XZ) already defined in xxx.obj
我有错误,当我试图编译一个库(命名为AAA)库AAA使用Core.dll,两者都使用第二个名为Common.dll的库。类型QMap<int,double>在每个库中使用。
当我看到xxx。obj(位于AAA),我对QMap<int,double>的唯一用法是当我使用返回QMap并位于Core.dll
的函数时。我在核心中定义了很多函数,并在AAA中使用,但我以前从未见过这个错误。
我检查了很多事情:试图用QVector改变QMap,相同类型的错误。我没有任何"include cpp"文件。当我使用Clang或GCC编译项目时,我没有错误。如果我使用QMap<int,double>*,我不会有错误,但我不想
我认为这是一个与qmap模板相关的错误,但我不确定
你有主意吗?由于
Ps:我已经更改了第三个库(AAA)的名称,因为这是我用于我的工作的代码,不能分享关于它的很多东西
所以,我通过替换QMap<int,>由位于第三个库中的另一个对象。我见过QMap<int,>
但我不知道是否有编译器(MSVC2015)或我的代码的问题。
我已经使用了这些网站来帮助我:
- https://forum.qt.io/topic/43408/error-lnk2005-when-deriving-from-qvariantmap
- http://web.archive.org/web/20090323151858/https://mareq.com/2008/10/exporting-non-template-class-inherited.html