我正在将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.*
(,然后我的链接器不再抱怨。