gpt4 book ai didi

c++ - 在 Visual Studio 2012 中使用 dlib

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:42 24 4
gpt4 key购买 nike

我想在我的项目中使用优化算法 lbfgs,但我不想自己编写代码。所以我找到了Dlib是一个不错的选择。

http://dlib.net/compile.html是一个很好的图书馆。我下载了它。我使用 windows 7 和 visual studio 2012。如果我创建一个新的 win 32 控制台项目并设置 property->configuration properties->VC++ Directories->Include DirectoriesDlib 的路径(dlib-18.10/).

enter image description here

它运行良好,这意味着我可以运行示例。

但是当我将它添加到我的项目中时。我发生错误。(error : "vector" is ambiguous)

我想这可能是因为我包含它的方式。

关于Dlib的文件,它说,

Again, note that you should not add the dlib folder itself to your compiler's include path. Doing so will cause the build to fail because of name collisions (such as dlib/string.h and string.h from the standard library). Instead you should add the folder that contains the dlib folder to your include search path and then use include statements of the form #include <dlib/queue.h>. This will ensure that everything builds correctly.

但是我不清楚上面是什么意思。我用谷歌搜索了 the Visual Studio search path (Tools / Options / Projects and Solutions / VC++ Directories). .但在我的项目中,这是不可编辑的。

我只在 dlib 中使用 optimization.h。如果我删除“using namespace dlib;”,然后删除“typedef matrix column_vector;”,则错误为 matrix不是模板。如果我继续“使用命名空间 dlib;”我有错误“vector ”不明确。

#include <dlib/optimization.h>
#include <iostream>


using namespace std;
using namespace dlib;

// ----------------------------------------------------------------------------------------

// In dlib, the general purpose solvers optimize functions that take a column
// vector as input and return a double. So here we make a typedef for a
// variable length column vector of doubles. This is the type we will use to
// represent the input to our objective functions which we will be minimizing.
typedef matrix<double,0,1> column_vector;

最佳答案

如文档所述,include 目录应该是您下载的 zip 文件的根目录。然后你包括为 #include <dlib/vector.h> .但是,由于 vector 也是在 std 的命名空间下定义的,因此您应该特别指出您将使用哪个命名空间的 STL。

如果你想使用 std::vector, #include <vector.h>然后将其用作 std::vector<int> stdVar;

同样,对于dlib, #include <dlib/geometry/vector然后将其用作 dlib::vector<int> dLibVar;

您也可以删除 using namespace std如果你不像 dlib 那样频繁地使用它。那么您引用的每个 STL 都将是 dlib。如果你想要 std,只需输入 std::vector .

关于c++ - 在 Visual Studio 2012 中使用 dlib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26040277/

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