SWIG uses a global variable in the Tcl interpreter to track the first module that was loaded. Currently, the code that sets the variable does not explicitly use the global namespace. This works correctly as long as you load the modules outside of a namespace and outside of a procedure. If you load the modules within a namespace or procedure, or if you using Tcl packaging system, the 2nd module will overwrite the global variable and there will be no linkage between them.
The attached patch contains a tiny fix for the problem as well as a modification to the tcl imports test to reproduce the issue.