Although it is possible to do, Blender isn’t terribly well suited for this sort of thing.
Smart UV Project is probably the best option but it is quite slow and with dense meshes you will almost certainly end up with overlapping faces in a few places. Good luck trying to find and fix them by hand, although depending on your texture these problem areas may not be that noticeable. With Blender’s automatic UV tools it is also difficult to reliably get large enough island margins to prevent mipmapping problems while packing efficiently enough to retain adequate texture resolution.
Depending on the specific requirements you may be able to use the UV Project modifier and skip unwrapping entirely, however, it has its own set of limitations.
As painful as it can be manual retopo is probably the best general option. If nothing else it allows you to break up the source mesh and work on small sections at one time in order to maintain acceptable viewport performance.