【问题标题】:Compilation errors when trying to include a header only library (tiny-dnn) in VS2015尝试在 VS2015 中包含仅标头库(tiny-dnn)时出现编译错误
【发布时间】:2021-10-01 18:40:58
【问题描述】:

为文字图片道歉。我无权访问原件。

我在 MS10 上运行 VS2015。我正在尝试实现文档中的示例代码:https://tiny-dnn.readthedocs.io/en/latest/getting_started/Getting-started.html

以下代码无法编译:

#include "stdafx.h"

#include <iostream>
#include "tiny_dnn/tiny_dnn.h"

using namespace tiny_dnn;
using namespace tiny_dnn::activation;
using namespace tiny_dnn::layers;

int main(){
    network<sequential> net;
    net << fully_connected_layer(2, 3) << sigmoid_layer()
        << fully_connected_layer(3, 1) << sigmoid_layer();
    return 0;
}

我收到以下错误:

我将根文件夹添加到我的包含:

似乎缺少许多标识符:

此外,在我强制它与定义一起消失之前,我遇到了以下编译错误。可能相关:

我做错了什么?

【问题讨论】:

  • 0) 你发布的是文本图像 1) 你混合了编译错误和智能感知错误 2) 这个库似乎不支持 VS
  • 为文字图片道歉。我无权访问原件。
  • 在他们的GitHub上列出要求是gcc 4.9+, clang 3.6+ or VS 2015+
  • 你可能想创建一个新问题。如果库声称与 VS 兼容,那么使用它不需要执行过多的警告抑制。 windows build也有失败状态...
  • 我已经这样做了,但后来我认为问题出在我身上并且是一般问题,这就是我在这里发布问题的原因。

标签: c++ visual-studio-2015 tiny-dnn


【解决方案1】:

我知道 3 年后可能为时已晚,但我希望它会很有用,您的代码似乎存在与 _SCL_SECURE_NO_WARNINGS 相关的问题,这可能是由调用 C++ 中的任何潜在不安全方法引起的导致编译器警告(级别 3)的标准库,这可能是由 tiny-dnn 库中使用的东西引起的。要禁用此警告,请在您的代码中定义指令 _SCL_SECURE_NO_WARNINGS,然后再包含任何头文件,或者如果您使用预编译头文件,请将此指令放在您的预编译头文件中,然后再包含其他头文件。

#define _SCL_SECURE_NO_WARNINGS
#include <iostream>
#include "tiny_dnn/tiny_dnn.h"

using namespace tiny_dnn;
using namespace tiny_dnn::activation;
using namespace tiny_dnn::layers;

int main(){
    network<sequential> net;
    net << fully_connected_layer(2, 3) << sigmoid_layer()
        << fully_connected_layer(3, 1) << sigmoid_layer();
    return 0;
}

另一件需要注意的事情 tiny-dnn 是根据 -std=c++14 标准设计的,如果您使用的是带有新标准(如 -std=c++17)的 tiny-dnn,您可能还会收到一些可能受到威胁的警告考虑到你的编译器选项的错误,那么你必须定义相应的指令,例如#define _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS for c++17

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多