나는 왜 내가 이러한 오류를 얻고 있는지 궁금합니다. 이미 H5cpp.h가 포함되어 있습니다. 기존 hdf5 데이터베이스에서 문자열을 읽으려고합니다. 또한 memspace를 어떻게 정의 할 것인지 잘 모르겠습니다. 당신open hdf5 string dataset
Reader.cpp: In member function ‘void Reader::SetFasta()’:
Reader.cpp:10: error: ‘DataSet’ was not declared in this scope
Reader.cpp:10: error: expected ‘;’ before ‘dataset’
Reader.cpp:11: error: ‘DataSpace’ was not declared in this scope
Reader.cpp:11: error: expected ‘;’ before ‘dataspace’
Reader.cpp:12: error: ‘dataset’ was not declared in this scope
Reader.cpp:12: error: ‘PredType’ has not been declared
Reader.cpp:12: error: expected unqualified-id before ‘(’ token
Reader.cpp:12: error: ‘memspace’ was not declared in this scope
Reader.cpp:12: error: ‘dataspace’ was not declared in this scope
에게 Reader.h
#ifndef READER_H
#define READER_H
#include <string>
#include "H5Cpp.h"
#define FILEHDF "/media/data/back_up.h5"
class Reader
{
private:
hid_t file_id, dataset_id, dataspace_id, group_id,strtype, memtype;
hsize_t dims[1];
herr_t status;
std::string m_fasta;
Reader() {}
public:
Reader(std::string prot_name);
void SetFasta();
std::string GetFasta() {return m_fasta;}
};
#endif
Reader.cpp 감사
#include "Reader.h"
Reader::Reader(std::string prot_name)
{
file_id=H5Fopen(FILEHDF, H5F_ACC_RDWR, H5P_DEFAULT);
group_id=H5Gopen2(file_id, prot_name.c_str(), H5P_DEFAULT);
SetFasta();
}
void Reader::SetFasta()
{
DataSet dataset=file_id.openDataSet("Fasta_seq");
DataSpace dataspace=dataset.getSpace();
dataset.read(m_fasta, PredType::H5T_C_S1, memspace, dataspace);
}
MAIN.CPP
#include <iostream>
using namespace std;
#include <string>
#include "Reader.h"
#include "H5Cpp.h"
int main()
{ std::string prot_name, fasta_seq;
prot_name="102LA";
Reader rd(prot_name);
fasta_seq=rd.GetFasta();
cout<<fasta_seq;
return 0;
}
이 감사합니다 ... http://stackoverflow.com/questions/28792297/hdf5-c-api-read-multiple-dataset-from -a-single-h5-file – lorniper