Then I did some debuging, I discovered the problem was the definition of the BIOHDF_MAX_STRING_SIZE in the */include/biohdf_api.h. The default size is too small for my data. The main common reason of the segement fault is using the memory illegally. So I revised the BIOHDF_MAX_STRING_SIZE with an appropriate size, and then the problem disappeared.
Suggestion: The BioHDF is in the testing period, the hdf group haven't provided official tech support. When I sent a feedback of this problem to the hdf group, they replied that we should implement the BioHDF tools which we need on our own, some bugs in BioHDF alpha version haven't been fixed yet.