Ok, I found the mistake. It's more or less stupid me, because i didn't consider one of the most annoying pecularities of LabVIEW: you can't have two VIs with the same name loaded at a time, *even* if they're located in different directories! This is very nasty because on the one side LabVIEW remembers where you load your VIs from but on the other hand it dosn't distinguish between VIs using the path but just using the file name...
To explain why this was a problem for my project I didn't easily spot, I have to describe the structure a bit. The project basically consists of one main VI which loads some other important VIs dynamically which shall run in parallel (user GUIs) without disturbing the main VI. So more or less the main VI includes two (right now) additional applications which over all can be developed almost separately. So clashing filenames are just observeable if I have open all dynamically loaded VIs or on compilation.
So what I'm most "angry" about is that the error message in the compilation process gives no usefull explanation. It just says "VI a.vi in b.llb is not executable" but it should say addintionally "VI c.vi could not be loaded because a VI with this name is already in memory". That's the explanatory message I get when I open some VIs with clashing names in contained sub VIs in the development environment.
What I'd even more like is that LabVIEW would not only depend on the file name but at least include the path to the VI. Even better would be an included GUID which would be created on "New VI" or on "Save as" which would identify the VI additionally to the name.
Cheers,
Carsten