尝试在QtCreator中添加外部库时出现LNK2005

时间:2019-11-26 23:40:45

标签: c++ qt linker qt-creator qmake

一个非常奇怪的问题:实际上,我能够轻松地将库文件“ FastRTPS”(DDS库)添加到我的项目中,并且之前运行良好。当我尝试升级到新的FastRTPS版本时,编译失败。在某个时候,我放弃了尝试恢复为以前可用的版本的尝试,但是根本无法再使用了。

所以我的设置如下:

  • 具有Qt 5.13.1 + MSVC2017 x64编译器的QtCreator,发布模式
  • 分机。库“用于x64Win64VS2017的FastRTPS v1.8”(预编译,从二进制文件安装)

这就是项目.pro文件中的内容:

win32: LIBS += -L$$PWD/../../../../prog/FastRTPSv1.8/lib/x64Win64VS2017/ -lfastcdr-1.0

INCLUDEPATH += $$PWD/../../../../prog/FastRTPSv1.8/lib/x64Win64VS2017
DEPENDPATH += $$PWD/../../../../prog/FastRTPSv1.8/lib/x64Win64VS2017

win32:!win32-g++: PRE_TARGETDEPS += $$PWD/../../../../prog/FastRTPSv1.8/lib/x64Win64VS2017/fastcdr-1.0.lib
else:win32-g++: PRE_TARGETDEPS += $$PWD/../../../../prog/FastRTPSv1.8/lib/x64Win64VS2017/libfastcdr-1.0.a

win32: LIBS += -L$$PWD/../../../../prog/FastRTPSv1.8/lib/x64Win64VS2017/ -lfastrtps-1.8

win32:!win32-g++: PRE_TARGETDEPS += $$PWD/../../../../prog/FastRTPSv1.8/lib/x64Win64VS2017/fastrtps-1.8.lib
else:win32-g++: PRE_TARGETDEPS += $$PWD/../../../../prog/FastRTPSv1.8/lib/x64Win64VS2017/libfastrtps-1.8.a

这将添加FastRTPS和FastCDR(FastRTPS必需)。例如,始终弹出以下错误:

libfastcdr-1.0.lib(Cdr.obj):-1: Fehler: LNK2005: "public: class eprosima::fastcdr::Cdr & __cdecl eprosima::fastcdr::Cdr::serialize_encapsulation(void)" (?serialize_encapsulation@Cdr@fastcdr@eprosima@@QEAAAEAV123@XZ) ist bereits in fastcdr-1.0.lib(fastcdr-1.0.dll) definiert.

总是会发生15种此类错误,我只是不知道是什么原因导致了该问题。

这是我已经尝试过的:

  • 运行清除解决方案-> qmake->每次尝试后重新构建
  • 删除了构建文件夹
  • 将.pro文件中的路径更改为非相对路径

你们知道什么会导致这样的错误吗?

0 个答案:

没有答案