Problem Manipulating TBrush* Across DLL Boundary?

Is there an inherent problem in passing a VCL object from the DLL in which
it is instantiated into another DLL for manipulation?  I have a custom form
(derived from TForm) defined in a package.  I instantiate the form in a DLL
and pass the form's background TBrush* to a routine in a second DLL.  When
that routine attempts to update the TBrush's color property, an address
violation occurs in the VCL (in TResourceManager.FreeResource called by
TResourceManager.ChangeResource called by TBrush.SetData called by

Does anyone know what the problem/solution is?