当我将我的VS项目构建为Debug时,它始终与tbb_debug.lib(后者又与tbb_debug.dll链接)自动链接。有没有一种方法可以覆盖这一点,并使tbb.lib链接即使是调试版本?如何为TBB禁用自动链接
回答
首先,你确定它是'自动链接'吗?
如果是这样,则使用#pragma comment(lib, tbb_debug.lib)
完成。找到这个代码的位置,如果是你的代码,可以修改它,或者以某种方式解除它(通过不包括代码所在的文件,或者#定义禁用此代码的东西;任何理智的库编写者都应该提供这样的机制它也应该清楚记录)。
如果没有这样的编译指示,库链接,因为它出现在项目设置。右键单击项目 - >属性 - >链接器 - >输入并调整。
编辑感谢Alexey的评论,似乎你可能会禁用TBB的自动链接,如this header file所示。定义__TBB_NO_IMPLICIT_LINKAGE
应该做的伎俩。
在TBB的情况下,宏名称是__TBB_NO_IMPLICIT_LINKAGE。但截至目前,它不是官方的,有记录的功能。 –
@AlexeyKukanov太棒了,我会将它添加到我的回答中 – stijn
如果与tbb_debug.lib
的autolinking与实现:
#pragma comment(lib, "tbb_debug")
然后作为the MSDN documentation page for pragma comment
解释说:
会在对象文件库中的搜索记录。 ...库名称遵循目标文件中的默认库搜索记录;链接器搜索这个库,就好像您已经在命令行上命名了它,只要该库不是用/nodefaultlib指定的。
您可以通过传递链接器选项/NODEFAULTLIB:tbb_debug.lib
来禁用通过#pragma comment(lib, "tbb_debug")
的自动链接。
但是,你问,因为你收到“多重定义符号”错误(LNK1169)或LNK4098?如果是这样,那么可能是您已将tbb.lib
列为对调试和发布配置文件的链接器的输入。您应该删除此调试配置文件的条目,因为正确的库正在自动链接到。
我在问,因为无论我如何更改项目文件,构建都在寻找tbb_debug。我认为你指出的是正确的,一有机会就会尝试。 – Middleware
- 1. CSS自行禁用链接
- 2. 如何禁用iPhone上的自动日期链接?
- 3. 动画篮禁用链接
- 4. 自动滚动启用和禁用链接
- 5. 禁用链接
- 6. 建立/链接到TBB在MinGW
- 7. 与静态链接英特尔TBB
- 8. 如何禁用电子邮件链接?
- 9. 如何禁用JavaScript超链接?
- 10. 如何禁用链接在javascript
- 11. 如何完全禁用分页链接
- 12. 如何禁用创建硬链接
- 13. 如何禁用div中的超链接
- 14. 如何禁用textarea和超链接
- 15. 如何完全禁用链接按钮?
- 16. 如何禁用JavaScript中的href链接?
- 17. 如何禁用正确的超链接
- 18. 锚链接禁用
- 19. 禁用超链接
- 20. 如何禁用按需子报表链接时(链接)值为null或零
- 21. 禁用移动设备上的链接
- 22. 禁用Jupyter笔记本自动超链接
- 23. Internet Explorer电子邮件地址自动链接 - 禁用?
- 24. 是否可以禁用iPhone的自动超链接?
- 25. 如何更改自动链接
- 26. 如何禁用活动链接的悬停效果?
- 27. 如何禁用自动滚动?
- 28. GitLab:如何禁用自动启动?
- 29. angular.js链接行为 - 禁用特定URL的深层链接
- 30. 如何为我想禁用的多个链接设置会话?
请问为什么不要调试库? – stijn
,因为我的二进制文件是一个插件,它的主机已经与TBB的版本库链接。 – Middleware
好点确实 – stijn