Зависимость от .lib к другому .lib - PullRequest
0 голосов
/ 25 января 2012

Я пытаюсь собрать OpenCV v2.3.1, используя Intel TBB и IPP. Я использовал CMake для генерации решения Visual Studio 2010. Сборка прошла успешно, и у меня есть opencv_core231d.lib среди выходных данных.

Теперь я пытаюсь связать opencv_core231d.lib с моим проектом. Однако после указания его в Linker -> Дополнительные зависимости я получаю сообщение об ошибке LNK1104: невозможно открыть файл 'tbb_debug.lib'.

Это не ошибка неразрешенных внешних факторов. Линкер хочет от меня конкретный файл .lib! Как это может быть?

Я сделал dumpbin /all для opencv_core231d.lib, и для нескольких разделов он говорит мне:

Linker Directives
-----------------
...
/DEFAULTLIB:"tbb_debug.lib"
...

Я попытался добавить tbb_debug.lib в опцию компоновщика / NODEFAULTLIB моего проекта, и это решило проблему. Однако я просто хочу, чтобы TBB был связан в opencv_core231d.lib.

Странно то, что я не могу найти причину, по которой tbb_debug.lib добавляется в параметр / DEFAULTLIB opencv_core231d.lib. Я искал все файлы в каталоге решений, упомянув tbb_debug.lib в качестве подстроки, но единственные совпадения были в сгенерированных файлах .obj и .lib, а не в исходных файлах или файлах проекта. Где магия?

Этот вопрос касается не только OpenCV, но и всего процесса работы с .lib-файлами.

Обновление

В TBB была директива #pragma comment(lib, "tbb_debug.lib"), включающая файл _tbb_windef.h, так что теперь я могу понять, откуда она взялась.

Чего я до сих пор не понимаю, так это почему он не связан статически в opencv_core231d.lib? Я установил для параметра Библиотекаря -> Зависимости библиотеки значение Да. И в моем проекте нет директив #pragma comment(lib, "tbb_debug.lib") - я проверил вывод препроцессора.

Спасибо.

1 Ответ

2 голосов
/ 25 января 2012

Возможно, в одном из заголовочных файлов есть #pragma comment(lib, "tbb_debug").

Это связано с использованием потоковых строительных блоков Intel.Смотрите эту запись в блоге для получения дополнительной информации: http://software.intel.com/en-us/blogs/2008/07/07/get-tbb-going-by-a-single-click/

...