gpt4 book ai didi

c++ - 从 .lib 到另一个 .lib 的依赖

转载 作者:行者123 更新时间:2023-11-28 03:41:36 29 4
gpt4 key购买 nike

我正在尝试使用 Intel TBB 和 IPP 构建 OpenCV v2.3.1。我使用 CMake 生成 Visual Studio 2010 解决方案。构建成功,我在输出中有 opencv_core231d.lib。

现在我正在尝试将 opencv_core231d.lib 与我的项目链接起来。但是,在链接器 -> 附加依赖项中指定它之后,我收到错误 LNK1104:无法打开文件 'tbb_debug.lib'。

这不是关于 Unresolved external 问题的错误。链接器需要我提供特定的 .lib 文件!怎么可能?

我已经完成了 opencv_core231d.lib 的 dumpbin/all 并且它告诉我几个部分:

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

我尝试将 tbb_debug.lib 添加到我项目的/NODEFAULTLIB 链接器选项,它解决了问题。但是,我只想在 opencv_core231d.lib 中链接 TBB。

奇怪的是,我找不到将 tbb_debug.lib 添加到 opencv_core231d.lib 的/DEFAULTLIB 选项的任何原因。我搜索了解决方案目录中提到 tbb_debug.lib 作为子字符串的所有文件,但唯一匹配的是生成的 .obj 和 .lib 文件——而不是任何源文件或项目文件。神奇在哪里?

这个问题不仅与 OpenCV 有关,而且与使用 .lib 文件的整个过程有关。

更新

在 TBB 包含文件 _tbb_windef.h 中有一个 #pragma comment(lib, "tbb_debug.lib") 指令,所以现在我可以理解它从哪里去了。

我还是不明白的是为什么在opencv_core231d.lib中没有静态链接?我已将 Librarian -> Link Library Dependencies 选项设置为 Yes。而且我的项目中没有 #pragma comment(lib, "tbb_debug.lib") 指令 - 我已经检查了预处理器输出。

谢谢。

最佳答案

可能有一个 #pragma comment(lib, "tbb_debug") 在您包含的其中一个头文件中。

这与英特尔使用线程构建 block 有关。有关详细信息,请参阅此博客文章:http://software.intel.com/en-us/blogs/2008/07/07/get-tbb-going-by-a-single-click/

关于c++ - 从 .lib 到另一个 .lib 的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9007906/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com