Question: There is a dynamic library, whose exposed structure is being changed, new fields are being added at the end of the structure.

Memory for the structure is allocated from within the library and application doesn't allocate it.But, the application may be accessing members of the structure directly.

In this case is it required for the application to recompile again with the library?

Library is being used on all Operating Systems (Windows, Linux, Solaris, HP-UX etc).

Answer: 
If the structure's size doesn't change, recompiling the code is not needed. That's why you often see structs like this in public APIs:

```
struct something {
  int public_field1;
  float public_field2;
  char padding[256];
}

```

When new fields are added, they are added after `public_field2`, and the size of the padding is decreased so that the total size remains constant.
The KDE techbase has a good article on binary compatibility.

<http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++>

I'd say that if the structure is public it should need to recompile. If the structure was only for internal use, it wouldn't matter.