Hi MrBean,
I would say put the shared resources in their own DLL, and make wrapper VIs that call into the shared resources. That way, if the resource interfaces change, you don't have to change all the accessors. Or you can keep the shared resources seperate, but have a single access point to all shared stuff in his app that wraps the interfaces to the shared resources.
Hope this information helps.
Yi Y.
Applications Engineer
National Instruments
http://www.ni.com/support