Visual C++ говорит: "LNK1104: невозможно открыть файл" stlport_statix.lib ""

При попытке связать мое решение 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).

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

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

1 ответ

Решение

Задача решена. У меня был проект в решении с использованием /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).

Другие вопросы по тегам