我下载了林德康编写的隐马尔可夫模型的C++实现,但在src目录中键入make
时出错。
谢谢@Michael,这个问题解决了。
在tables.cpp
中,添加#include <cstdlib>
。
在genseq.cpp
和trainhmm.cpp
中,添加#include <stdlib.h>
。
错误信息:
g++ -c -o tables.o -g tables.cpp
tables.cpp: In member function 'bool OneDTable::rand(long unsigned int&)':
tables.cpp:155:24: error: '::rand' has not been declared
tables.cpp:155:34: error: 'RAND_MAX' was not declared in this scope
make: *** [tables.o] Error 1
您不应该自己调用编译器。该项目包含一个Makefile,因此运行make
并修复Makefile和源代码中的损坏,而不是尝试自己单独构建.o
但是:
该table.cpp可能缺少#include
行,在该行中,标头将包含在声明OneDTable::rand(..)
的位置。此外,缺少::rand
表示缺少标准库include。这并不能很好地说明源代码的完整性。也许,只是也许,作为一个C++初学者,你不想从12岁的坏C++开始。
如果你没有过度使用纯C++,你可以使用gHMM,它要成熟得多(而且是用C编写的,所以在C++中可以完美地工作,但没有那么面向对象(。此外,HMMlib看起来还不错。