Почему мой компоновщик ищет Coin4sd.lib после того, как обнаружил Coin4d.lib? - PullRequest
0 голосов
/ 06 февраля 2020

Я использую библиотеку 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?

1 Ответ

1 голос
/ 26 февраля 2020

Я обнаружил, что я использовал COIN_DLL в качестве определения, что, очевидно, заставило меня иметь имена Coin4d.*. Когда я использую COIN_NOT_DLL, тогда, если я все правильно понимаю, создается библиотека stati c (с именем Coin4sd.*), и мой компоновщик больше не жалуется.

...