The main difference between static libraries and DLLs/EXEs are that static libraries are not linked. A static library is essentially just a bundle of compiled .obj files. The static lib may have dangling references to functions and/or variables that reside in other, outside C source files, static libraries, or DLLs. These references are only resolved when the static lib is included in a DLL or EXE project, and that project is built.
If you change static lib A, you should not have to recompile static lib B (that uses A). You would only need to recompile B if you had added A to the project tree of B. In this case, B would directly include A, and even if you rebuild A, your built B would still contain the old, stale version of A. (Static libs do not work like DLLs!)
If you have rebuilt A, and then C, and you're somehow seeing the old implementation of your a-func, then something unexpected is going on. Perhaps the lib A that's included in your DLL C project is old -- that is, it's a different filepath than the new A you rebuilt.
Mert A.
National Instruments