If a non-static function is defined in more than one object file, the results at run-time are unexpected or unpredictable. I was under the impression that there were compiler options to prevent this. At least on Mac OS, these must not be used, as I just ran into this problem.
So, either we find out which options are needed and add them, or we could provide some additional checks in the build system to help catch this error. For example, Cactus scheduled functions defined with the same name should be easy to catch.