0

我正在为某个项目使用 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/lib\Coin4d.lib:

但是,稍后,我收到链接器错误

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

请注意库文件名中多余的“s”!

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

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

4

1 回答 1

1

我发现我使用COIN_DLL的是定义,这显然导致我拥有Coin4d.*文件名。当我使用COIN_NOT_DLLthen 时,如果我理解正确,库的静态版本(具有 filename Coin4sd.*)将被构建,然后我的链接器不再抱怨。

于 2020-02-26T07:53:33.190 回答