【问题标题】:Linking to Boost in DLL file在 DLL 文件中链接到 Boost
【发布时间】:2014-08-29 17:49:39
【问题描述】:

我创建了一个链接到 Boost 库的 Win32 DLL 应用程序。它可以编译,一切都很好,除了如果我创建另一个引用 DLL 的应用程序,它还需要该应用程序链接到 Boost。如果我没有链接到 Boost,我会收到“致命错误 C1083:无法打开包含文件:'boost/utility.hpp':没有这样的文件或目录。”有没有办法解决?我是一个菜鸟,所以我觉得我可能遗漏了一些重要的东西,但我还没有在搜索中找到任何东西。谢谢!

【问题讨论】:

  • 这看起来像是编译错误(甚至是预处理器错误)而不是 linking 错误。

标签: c++ visual-studio-2012 boost dll


【解决方案1】:

正如 Biffen 在 cmets 中所说,这是一个编译错误。您的项目需要能够读取其他项目使用的 Boost 头文件,因此您必须编辑项目设置“其他包含目录”,以便可以访问 Boost 头文件的位置。

【讨论】:

  • 谢谢,蒂姆。当我在使用 DLL 的控制台应用程序中添加 Boost 作为附加包含目录时,它工作正常。我的问题是我希望能够分发这个 DLL。要求用户也有 Boost 库似乎很麻烦。只是想知道您是否知道最好的解决方法是什么。
  • 我认为用户不需要 Boost 库来运行您的控制台应用程序(使用您的 DLL)。我相信您的问题是您的控制台应用程序无法编译,因为它没有在 Boost 标头中提供所需的声明/定义。构建控制台应用程序 (*.exe) 和 DLL 后,您应该能够将它们带到没有 Boost 库的另一台机器上,并且它们应该可以正常工作。你试过这个吗?
  • 所以我应该说明我的应用程序最初是什么——我的 DLL 旨在成为通过串行端口与设备交互的 API。我创建了控制台应用程序来测试此功能。所以理想情况下,我希望 DLL 是独立的。
  • 尝试重构您的代码,以便 Boost 标头仅包含在您的实现 (*.cpp) 文件中。这可能需要前向声明一些 Boost 类,并且只在类声明中使用指向这些 Boost 类的指针或引用。
  • 太棒了!乐于助人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 2020-10-01
  • 2012-03-24
相关资源
最近更新 更多