【问题标题】:Using Shark machine learning library in Visual Studio C++在 Visual Studio C++ 中使用 Shark 机器学习库
【发布时间】:2016-05-18 06:42:45
【问题描述】:

我想在 Visual Studio 2013 中使用 Shark 库。他们在 Shark-3.0.0\examples 中提供了以下示例:

#include <shark/Core/Shark.h>
#include <iostream>

int main(int argc, char ** argv)
{
    shark::Shark::info(std::cout);
}

但是,我收到以下错误:

错误 C1083:无法打开包含文件:'shark/Core/shark.h':没有这样的文件或目录。

其实Shark-3.0.0\include\shark\Core中的头文件名是Shark.h.in。但是,如果我将#include &lt;shark/Core/shark.h&gt; 更改为#include &lt;shark/Core/shark.h.in&gt;,则会出现以下错误:

错误 C1083:无法打开包含文件:'boost/version.hpp':没有这样的文件或目录。

【问题讨论】:

  • *.foo.in 通常表示一个文件是 in 用于某些系统/脚本的,它将把它变成一个*.foo 文件。因此,在不知道这个“Shark”库的第一件事的情况下,您是按照该库的安装说明进行操作,还是只是在某个地方解压了它?
  • 我在CMake中点击了Generate,生成成功!
  • "Generate" 表示您生成了构建文件。 (MSVC 解决方案,最有可能。)您仍然需要实际 build 库...(您确定您已经准备好使用像 Shark 这样的第三方库了吗?似乎您还在不太熟悉基本的构建工具...)

标签: c++ visual-studio compiler-errors machine-learning


【解决方案1】:

Shark 是一个作为源包提供的库,(根据其README.txt 中的说明)需要在目标机器上编译:

安装/文档

Shark 库文档的入口点位于 文档/index.html 。安装说明请点击 该页面上的“入门”。安装指南简版: 发出“ccmake”。在主目录中选择构建选项, 然后在主目录中发出“make”——你应该是 完成(假设已安装 Boost 和 CMake)。请参阅文档 详细说明。

更详细的安装说明available from the library provider

请注意,Shark 似乎依赖于Boost,因此请先安装它...

【讨论】:

  • @user5388874:好的,让我们慢慢来。 CMake 不构建软件。生成构建文件。在 Unix 机器上,它默认生成 Makefiles,但可以生成例如KDevelop 或 CodeBlocks 的项目文件。在 Windows 上,它生成 MSVC 解决方案,但也可以生成 NMake Makefiles。您说您“单击了在 CMake 中生成”。这意味着您现在很可能拥有以前没有的 MSVC 解决方案 (*.sln)。 您还没有构建 Shark 库。
  • @user5388874:在您构建(并且可能已安装)Shark 库之后,您需要将正确的目录添加到您的 MSVC 设置中-- 首先是包含shark/Core/shark.h 的那个,也就是shark 目录所在的目录 -- 然后是包含boost/version.hpp 的那个目录。然后,您需要将 library 目录添加到您的设置中,以便这些库可以链接(否则您将收到“未定义引用”错误)。
  • @user5388874:我告诉你,这表明你可能进入一个看起来相当复杂的领域的中间有点早- 特定工具库。无意冒犯,但多年来我经常看到这种情况:您想使用 Shark 给您的东西(赛车),并且您正在通过小学快进到达那里(驾驶学校)。我只是警告你,如果你慢慢来,你可能会更喜欢它(不要前往那里的那堵伤害之墙)。
  • 您能否详细说明将库目录添加到安装程序。我应该把它放在链接依赖(或)编译器依赖中吗?
  • @Sashank:“...您需要将库目录添加到您的设置中,以便库可以链接。” -- 那将是 link 依赖项。 ;-)
【解决方案2】:

这是 Shark 构建系统的一种怪癖。 Shar 的构建文件夹中有两个“包含”文件夹。 Shark.h 在其中之一。您需要将这两个文件夹添加为包含目录或复制 Shark.h..

【讨论】:

    【解决方案3】:

    我刚刚解决了这个问题,所以我想我可以在这里尝试分享我的解决方案。事实上,阅读文档并没有多大帮助。请注意,我在 Windows 环境中使用 Shark。因此,如果您使用 Linux 环境,请在您的 Linux 平台上适当考虑我的解决方案。

    确实,您需要做的是在“包含目录”中添加两件事:

    1. 预编译的鲨鱼库路径 (例如:E:\Users\frank\Projects\SVM\code_c++\sharkTrial\shark_compiledFiles\include)

    2. 提升之路 (C:\local\boost_1_59_0)

    您始终可以在 IDE(例如 Eclipse)中执行类似的操作。希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多