为什么我的链接器在找到Coin4d.lib后搜索Coin4sd.lib?

Why does my linker search for Coin4sd.lib after it found Coin4d.lib?

本文关键字:lib 搜索 Coin4sd Coin4d 链接 我的 为什么      更新时间:2023-10-16

我正在将Coin 4.0.0库(https://github.com/coin3d/coin(用于某个项目。 使用 CMake 构建该库时,我得到了以下文件:

bin
|-- Coin4d.dll
`-- Coin4d.pdb
lib
|-- Coin4d.lib

这对我来说看起来不错。 然后,我们使用qmake来构建最终的可执行文件。在我的qmake.pro文件中,我有

LIBS += -lCoin4d

但是,当最终.exe使用 Visual Studio 2015 链接器链接在一起时,我看到它首先搜索(并找到(Coin4d.lib

Searching D:/SVN/simcad/trunkd/ThirdParty/Coin/install/libCoin4d.lib:

但是,过了一会儿,我收到链接器错误

LINK : fatal error LNK1104: cannot open file 'Coin4sd.lib'

请注意此处库文件名中多余的"s"!

我不知道为什么链接器在找到Coin4d.lib后也在寻找Coin4sd.lib。 我想系统地找出这一点,但不知道从哪里开始。

所以我的问题是:我可以使用什么工具/命令来系统地找出为什么我的链接器在显然第一次找到Coin4d.lib后也在搜索Coin4sd.lib? 我是否也应该调查用于构建最终可执行文件的库,并检查其中是否有任何库以某种方式引用Coin4sd.lib

我发现我正在使用COIN_DLL作为定义,这显然导致我拥有Coin4d.*文件名。 当我使用COIN_NOT_DLL时,如果我正确理解了事情,就会构建库的静态版本(文件名为Coin4sd.*(,然后我的链接器不再抱怨。