Visual C ++ говорит: «LNK1104: невозможно открыть файл« stlport_statix.lib »» - PullRequest
0 голосов
/ 15 октября 2010

При попытке связать моё решение C ++ в Visual Studio 2008 я получаю сообщение «LNK1104: невозможно открыть файл« stlport_statix.lib »».

Я установил STLport, и правильный путь указан в Tools->Options->Projects And Solutions->VC++ Directories->Library Files. Однако STLport не предоставляет файл с именем stlport_statix.lib, только stlport_static.lib.

Откуда в Visual Studio появилась идея заменить окончание 'c' на 'x'?

Обратите внимание, что это может быть очень простой ошибкой, так как я не знаком со стеком Microsoft (исходя из фона Linux / gcc).

Редактировать: Я выяснил, откуда взялся 'x', это означает "статическая библиотека STLport, построенная с динамическим RTL". Тот, кто создал STLPort, не создавал эту версию, поскольку мы не должны ее использовать.

Edit2: Сейчас я пытаюсь выяснить, почему Visual Studio строится с /MD, хотя в проекте «Генерация кода» установлено использование /MT. Кажется, это корень проблемы.

1 Ответ

0 голосов
/ 15 октября 2010

Проблема решена.У меня был проект в решении, использующий /MD вместо /MT, который я пропустил.

Длинное объяснение: STLport может быть построен либо для динамического связывания, либо для статического связывания.Он также может быть построен для статического связывания, но с динамически связанной библиотекой времени выполнения.В результате получается библиотека с именем «stlport_statix.lib», тогда как обычная статически связанная библиотека называется «stlport_static.lib».

При сборке с помощью STLport _auto_link.h решает, с какой версией ссылатьсяв зависимости от того, используете ли вы /MD или /MT.

Подробнее см. _auto_link.h строки 27-39 и _detect_dll_or_lib.h строки 32-65 (при условии STLport 5.2.1).

...