前提条件:
我使用的是我的客户提供的内部开发环境,这个开发环境是基于Qt Creator基础上开发的,我们在此次的问题中暂且叫它“CNC”。
在此次的项目中我将一个名为DDS的库编译成了DDS.lib的库文件,成功将DDS.lib添加到我的项目中后构建项目发生了以下报错信息:“:-1: error: LNK1104: could not open file“ddservicesd.lib””。经过我的排查,我发现这个"ddservicesd.lib"文件在DDS库中是存在名为ddservices.h和ddservices.cpp文件的。
我在CNC下使用的编译器如下:
C:Microsoft Visual C++ Compiler 15.0 (amd64)
C++:Microsoft Visual C++ Compiler 15.0 (amd64)
我在CNC下使用的调试器如下:
Auto-detected CDB at C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe
基于的Qt Creator版本:
5.12.10
我的问题如下:
(1)在DDS库中源文件名为“ddservices”,为什么在报错信息中会显示“ddservicesd”,末尾的这个字母“d”是系统自动添加的么?
(2)在上述提到的“LNK1104”报错信息,是否可能是编译器的原因。
我尝试进行了以下的解决方式:
在项目的所有文件中有部分的文件依靠着DDS库来运行,我在项目的pro文件中将“SOURCES +=”和“HEADERS +=”下的所有指定了需要编译并包含在项目中的C++源文件和头文件都删除然后构建,此时构建成功,LNK1104报错消失。然后恢复这些文件再构建,此时编译依旧成功。但是当第三次编译或者构建时,就会发生上述提到的LNK1104的错误。