trying to understand linkage with linker

If I create a function in a module with:
  auto f = module->getOrInsertFunction( "eval_expr", ...)
  //create function

Then later I link this with other modules:
  Linker link;
  link.LinkInModule( base_module );
  link.LinkInModule( module );

Then I create an execution engine something like:
  auto ee = EngineBuilder( link.getModule() )...create();

If I attempt to run the function directly I get an error:
  ee->runFunction( f, args );
"LLVM ERROR: Program used external function 'eval_expr' which could not
be resolved!"

But if I get the same function from the linked module it works:
  ee->runFunction( link.getModule()->getFunction( "eval_expr" ), args )

I'm trying to understand why. Once linked, are the source modules for
the linker in any way related to the result module, or is all data
copied and the source modules left alone? If this is true I can see that
somehow my "f" pointer simply isn't a function in the resulting module.
But perhaps somebody can explain it a bit better to me?