Under the MSVC C++ 2005 compilier, libexif is unable to parse most of an exif tag due to a sign extension when converting an ExifShort (uint16_t) to an enum (int).
For my purposes, I put in quick fixes on lines (attached):
-355 (exif_data_load_data_content() tag assignment);
-162 (exif_data_load_data_entry() entry->tag assignment);
-163 (exif_data_load_data_entry entry->format assignment);
There may be other places which require this fix or a more elegant one.