sclite (SCTK)、C++ 模板参数 Filter::Filter* 无效。西格文

2023-11-29

Problem

我目前正在尝试安装 NISTsclite,它是 SCTK 2.4.0 的一部分(github or 新版本)。我正在尝试安装Cygwin in bash。安装是使用完成的make.

我能够解决一个问题file [format] not recognized通过进行 64 位编译,如末尾所述README正如详细解释的another我的 SO 帖子。

现在,我再次遵循安装说明并在输入后出现以下错误make all

In file included from main.cpp:20:0:
recording.h:122:36: error: template argument 2 is invalid
         map<string, Filter::Filter*> filters;
                                    ^
recording.h:122:36: error: template argument 4 is invalid
make[3]: *** [makefile:59: main.o] Error 1
make[3]: Leaving directory 
'/cygdrive/c/Me/programs/nist/sctk/src/asclite/core'
make[2]: *** [makefile:12: all] Error 2
make[2]: Leaving directory 
'/cygdrive/c/Me/programs/nist/sctk/src/asclite'
make[1]: *** [makefile:12: all] Error 2
make[1]: Leaving directory '/cygdrive/c/Me/programs/nist/sctk/src'
make: *** [makefile:20: all] Error 2

有谁知道我可以做什么来完成安装?

Note:当这里的问题得到解答时,Cygwin 上的安装实际上并未完成。有事情要做before and after,我在 SO 上发布了我的进展以及下一步该去哪里的问题。


我的尝试

我还没有找到任何关于Filter在 C++ 文档中,并搜索克隆目录中的文件($ find . -type f \( -name "*.h" -o -name "*.c" -o -name "*.cpp" \) -print0 | xargs -I'{}' -0 grep -Hn "Filter" {}) 部分给出:

./src/asclite/core/checker.h:26:class Checker : public Filter
./src/asclite/core/filter.cpp:19: * Abstract interface to a Filter.
./src/asclite/core/filter.cpp:25:Filter::Filter()
./src/asclite/core/filter.cpp:30:Filter::~Filter()
./src/asclite/core/filter.h:26: * Abstract interface to a Filter.
./src/asclite/core/filter.h:28:class Filter
./src/asclite/core/filter.h:32:         Filter();
./src/asclite/core/filter.h:34:         virtual ~Filter();

...

据我所知,这意味着有一个构造函数,Filter在命名空间中,Filter.

这是“代码部分”filter.cpp

$ cat src/asclite/core/filter.cpp | tail -16

/**
 * Abstract interface to a Filter.
 */

#include "filter.h" // class's header file

// class constructor
Filter::Filter()
{
}

// class destructor
Filter::~Filter()
{
}

这是代码部分filter.h

$ cat src/asclite/core/filter.h | tail -27

#ifndef FILTER_H
#define FILTER_H

#include "stdinc.h"
#include "speech.h"
#include "speechset.h"

/**
 * Abstract interface to a Filter.
 */
class Filter
{
        public:
                // class constructor
                Filter();
                // class destructor
                virtual ~Filter();

                virtual bool isProcessAllSpeechSet() = 0;
                virtual unsigned long int ProcessSingleSpeech(Speech* speech) = 0;
                virtual unsigned long int ProcessSpeechSet(SpeechSet* ref, map<string, SpeechSet*> &hyp) = 0;

                virtual void LoadFile(const string& filename) = 0;
};

#endif // FILTER_H

系统详情

$ uname -a
CYGWIN_NT-6.1 CAP-D-ENG-INT3 2.10.0(0.325/5/3) 2018-02-02 15:16 x86_64 Cygwin
$ bash --version
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin) ...
$ gcc --version
gcc (GCC) 6.4.0 ...
$ g++ --version
g++ (GCC) 6.4.0 ...
$ make --version
GNU Make 4.2.1
Built for x86_64-unknown-cygwin ...
$ systeminfo | sed -n 's/^OS\ *//p'
Name:                   Microsoft Windows 7 Enterprise
Version:                6.1.7601 Service Pack 1 Build 7601
Manufacturer:           Microsoft Corporation
Configuration:          Member Workstation
Build Type:             Multiprocessor Free

The My Answer

(另请参阅我在该问题下的评论,描述了kaldi解决方案。)

Note: 这个问题解决后,又出现了一个问题。请参阅此答案的底部以获取帮助。

我一直在研究这个问题,我发现答案最终是改变有问题的行(以及其他一些行),正如我将展示的那样。提醒一下,有问题的行来自文件,src/asclite/core/recording.h

recording.h:122:28: error: template argument 2 is invalid
         map<string, Filter::Filter*> filters;

我把它改为

map<string, ::Filter*> filters;

我也做了同样的改变(Filter::Filter* to ::Filter* ) in src/asclite/core/recording.cpp,第 157 行和第 164 行,结果为:

157: map<string, ::Filter*>::iterator fi, fe;

164: ::Filter* ptr_elt = fi->second;

在寻找答案和解释时,我还发现另一页有解决方案,但没有解释。

下面的解释中有一个“让我澄清一下”注释,阐述了这只是安装的部分解决方案这一事实。


研究和(希望)解释

我首先注意到相关行之前和之后的声明没有命名空间和双冒号,而我们的行有Filter::Filter*,如下所示:

$ cat src/asclite/core/recording.h |头 -n 130 |尾-24 地图对齐器;

        /**
         * contain all the available Scorer
         */
        map<string, Scorer*> scorer;

        /**
         * contain all the available Segmentors
         */
        map<string, Segmentor*> segmentors;

        /**
                 * contain all the available Filters
         */
        map<string, Filter::Filter*> filters;

                /**
                 * Database for the optimization speaker alignment
                 */
                SpeakerMatch* m_pSpeakerMatch;

                /** the logger */
        static Logger* logger;

我首先尝试删除Filter命名空间和两个冒号 (::)。我发现了一些网站(1, 2, 3,...),头文件中似乎没有名称空间和双冒号的示例。它们仅存在于实施文件中。我删除了Filter::(来自有问题的行和其他一些行recording.cpp),但这给了我

In file included from main.cpp:20:0:
recording.h:122:28: error: template argument 2 is invalid
         map<string, Filter*> filters;
                            ^
recording.h:122:28: error: template argument 4 is invalid

在研究了双引号运算符(例如here),并在其他解决方案的帮助下,我改变了所有Filter::Filter* to ::Filter.

It compiled with some warnings, but the rest of the installation process worked. Let me clarify The make config and make all parts worked. There were errors in the make test part, detailed in another question here (to be asked). However, running make install creates the executables that I need.

有关前置双冒号的信息,我得到了一些帮助另一个SO帖子。构造函数之前的两个冒号“粘在”上,让我们知道它位于全局范围内,即在 reporting.h/.cpp 之外。这是必要的,因为在recording.h/.cpp, 还有另一种Filter方法为Recording对象已创建。 (当我写这篇文章时,事情变得越来越清晰。)

$ cat src/asclite/core/recording.cpp | head -n 290 | tail -5
/**
 * Filter the references and hypothesis with the availables filters.
 */
void Recording::Filter(const vector<string> & _filters)
{

$ cat src/asclite/core/recording.h | head -n 75 | tail -4
        /**
         * Filter the references and hypothesis with the availables filters.
         */
        void Filter(const vector<string> & _filters);

我认为我们没有命名空间的原因(即没有Filter之前::) 已解释这里就这样。在这篇文章中,给出了 .cpp(实现)文件中构造函数的代码并进行了解释:

Mems::Mems() //you don't actually need to use the class keyword in your .cpp file; 
just the class name, the double colon, and the method name is enough to mark this 
as a class method

据我了解,把Filter::Filter在代码中Recording对象会建议Filter::Filter是一个类方法Recording对象,但这没有意义,因为第一个Filter在冒号之前显然将其标记为 a 的类方法Filter目的。

如果此解释错误或不清楚,请立即修复。

该解决方案解决了问题中的问题,但有还有更多事要做在检查安装成功之前。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sclite (SCTK)、C++ 模板参数 Filter::Filter* 无效。西格文 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 日期格式 yyyy-MM-ddTHH:mm:ssZ

    我认为这应该很简单 但无法得到它 在此格式中 Z 是时区 T 是长时间模式除了使用之外 我怎样才能获得这种格式的日期 DateTime dt DateTime Now Console WriteLine dt ToString yyyy M
  • Magento“忘记密码”电子邮件以错误的语言发送

    我有一个具有多种语言的 Magento 网站 我已经设置了语言包 网站上的所有内容似乎都能正确翻译 交易电子邮件也以正确的语言发送除了 忘记密码 始终以德语发送的电子邮件 这就是我所做的 安装语言包并确保所有模板和文件夹结构正确 例子 ap
  • R Shiny:如何在 NULL 时不显示绘图

    如果您在 R 工作室中运行此代码 您会发现 NULL 数据的绘图仍然是一大块白色 数据为NULL时怎么不显示呢 在其他图表中 大白板看起来不太好 library shiny server lt function input output o
  • 在递归 CTE 下控制同级顺序?

    我有一个 CTE 查询 用于查找主叶和子叶 但我无法控制叶子选择顺序2个兄弟姐妹之间 表中的每一行声明为 childID INT parentID INT NAME NVARCHAR 30 location int Where locati
  • WordPress 中每页的自定义 CSS

    大家早上好 我为我们网站内的某些页面创建了不同的背景和一些其他图像 目前 以下代码与我们网站上的 儿童 页面配合良好
  • jsonp 调用中的错误仅来自 firefox-extension

    我的错误的奇怪之处在于它只发生在我在这篇文章底部链接到的 firefox 扩展中 我无法在任何其他设置中重现此错误 我有这个ajax请求 ajax type GET dataType jsonp url url jsonpCallback
  • Kubernetes docker 容器中的前端 Vue.js 应用程序无法连接到后端

    I have built a front end Vue js application running on a docker container under kubernetes environment the backend is al
  • 防止其他人调用您的 JSON Web 服务

    假设我有一些代码可以通过 JSON 服务调用创建 HTML 页面 如何防止其他人复制粘贴源代码 调用服务并获取第一个用户的结果集 如果我将域作为服务的参数或获取其他内容 例如用户名或密码 它们也可以被复制和粘贴并用于另一个域 我没有找到阻止
  • 在 C 中将 & (addressof) 与 const 变量一起使用

    教科书上说 addressof 运算符不适用于不能应用于表达式 常量 或寄存器变量 常量是否仅意味着 A 7 等文字或也用 const 关键字声明的变量 我认为这仅意味着文字 因为以下代码已编译 int main const int i 1
  • 如何使用会员验证密码事件处理程序?

    使用 asp 创建新用户时 有什么方法可以对密码选择进行一些限制吗 网会员 条件喜欢 密码强度 至少 8 个字符 并强制执行字符复杂性 即 不包含用户的帐户名 长度至少为八个字符 包含以下四个类别中三个类别的字符 英文大写字符 A 到 Z
  • 从现在开始下一个月的 10 号?

    我正在尝试查找从今天开始的下一个月的 10 号 因此 如果今天是 5 月 27 日 那么下一个 10 日就是 6 月 10 日 例如 如果今天是 8 月 1 日 那么接下来的 10 日将是 8 月 10 日 我知道我可以使用找到下个月的第一
  • Java - 对非静态字段列表进行静态引用

    我刚刚进行了实验 发现当我运行滚动代码时 它无法编译 我不明白为什么 我的 IDE 说 无法对非静态字段列表进行静态引用 但我不太明白这是什么或为什么 它还适用于什么 即 它只是私有变量和 或方法吗 为什么 public class MyL
  • 加速度计移动的距离

    我想通过移动 iPhone 来移动 iPhone 屏幕上的对象 矩形 圆形等 例如 我沿 X 轴移动 iPhone 物体也沿 X 轴移动 Y Z轴同样如此 我怎样才能做到这一点 我可以得到它的算法吗 谢谢 附 我看了一会儿 似乎可以使用加速
  • 无法使用Python登录亚马逊

    我正在使用 Python 3 编写一个脚本来登录 Amazon 以获取我的 Kindle 亮点 它基于这篇文章 https blog jverkamp com 2015 07 02 scraping kindle highlights 我无
  • iOS8 AVAudioEngine 如何通过多点连接发送麦克风数据?

    我想通过多点连接 iOS 8 发送麦克风音频数据 并通过接收方的扬声器播放它 我还设置了 AVAudioEngine 并且可以从 上方 扬声器输出听到麦克风数据 但我不知道如何通过网络发送 AVAudioPCMBuffer 这是我的代码片段
  • 全局变量的值在 ValueEventListener 中初始化后会重置

    我有一个名为 bg 的全局变量 它在 firebase 数据库引用 myRef 的 ValueEventListener 内初始化 但是 如果我尝试在 valueeventlistener 块之外使用变量的值 则该变量为空 就好像被重置了一
  • 使用 Big Query 将 firebase event_params 键值数据显示到单行中

    我正在尝试对 Firebase 存储的事件执行 Google BigQuery 我已经执行了以下查询 SELECT FROM myTable LIMIT 6 其结果如下 Row date name event params key even
  • 如何查找已安装的 .NET 版本?

    如何查明安装的 NET 版本 我正在寻找像这样简单的东西java version我可以在命令提示符下输入它 它会告诉我当前安装的版本 我最好补充一点 可能未安装 Visual Studio 这通常是我想了解的有关客户端计算机的信息 有一种更
  • JavaScript - 对 SELECT 选项进行排序

    我使用 PHP 扫描目录并列出所有 xml 文件 每个 XML 文件都包含 名称 元素和 日期 元素 每个 XML 文件的 name 元素作为选项列在选择列表中 这工作得很好 但是 每个 XML 文件中的 日期 元素都不同 并且包含如下日期
  • sclite (SCTK)、C++ 模板参数 Filter::Filter* 无效。西格文

    Problem 我目前正在尝试安装 NISTsclite 它是 SCTK 2 4 0 的一部分 github or 新版本 我正在尝试安装Cygwin in bash 安装是使用完成的make 我能够解决一个问题file format no