Каталоги VC ++ ведут себя странно - PullRequest
0 голосов
/ 06 февраля 2012

В последнее время я получил несколько странных ошибок компоновщика.

Меня учили, что есть два способа работы с библиотеками:

через

Project Properties > VC++ Directories > Include Directories
Project Properties > VC++ Directories > Library Directories

или через

Project Properties > C/C++  > General > Additional Include Directories
Project Properties > Linker > General > Additional Library Directories
Project Properties > Linker > Input   > Additional Dependencies

В последнее время, иногда, когда я использую каталоги VC ++, я получаю ошибку компоновщика, говорящую о том, что для какой-то функции нет определения. Когда я добавляю файл библиотеки, в котором находится определение функции, к дополнительным зависимостям, он внезапно находит его. Но если вы используете каталоги VC ++, обычно вы вообще не должны использовать дополнительные зависимости, верно?

Это происходило много раз и оставило меня более чем смущенным. Это работало хорошо на прошлых проектах, но не больше. Иногда способ VC ++ даже работает на другом ПК, но не на моем. Я всегда работал с VS2010 и до сих пор работаю с VS2010.

Кто-нибудь знает, что происходит?

1 Ответ

1 голос
/ 06 февраля 2012

Даже если вы указали дополнительные каталоги включения, Visual Studio не пытается автоматически связать все файлы библиотеки, присутствующие при сборке проекта. Вы должны предпринять дополнительный шаг, добавив имя файла библиотеки в список дополнительных зависимостей. Дополнительные каталоги include помогают избежать записи полного пути к файлу в списке дополнительных зависимостей.

Альтернативой изменению списка дополнительных зависимостей является использование директивы # pragma . В частности, используйте

    #pragma comment("[lib file name]")

Это позволит компоновщику связать этот файл в вашей сборке.

...