A very useful tool that you can use to figure out the exact API that is missing is called 'undname.exe' which is in the \VC\bin directory of your Visual Studio installation (for example, "D:\vs2010\VC\bin\undname.exe" for my VS2010 installation). You can use it to undecorate a name that is generated by the compiler. Here is a sequence that tells you more about the missing API:
[Note that the name flagged in your message above is "?Update@MEngineComponent@@UAEXXZ"]
D:\whatever>cd \vs2010\VC\bin
D:\vs2010\VC\bin>undname ?Update@MEngineComponent@@UAEXXZ
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation. All rights reserved.
Undecoration of :- "?Update@MEngineComponent@@UAEXXZ"
is :- "public: virtual void __thiscall MEngineComponent::Update(void)"
D:\vs2010\VC\bin>
The cause of the error can be a result of a declaration in a header file that is not implemented, differing parameter list between declaration and definition, mixed definition of linkage (ie. __thiscall, __stdcall etc.), missing export details ("__declspec(dllexport)") or several other things.