Posted 21 March 2013 - 03:42 PM
Sometimes, you can run into a problem of DLL "shadowing", where you have 2 different versions of a DLL in your path chain, and while you might have a correct DLL in one place that you expect the program to find, another one higher up the search chain might be grabbed instead, resulting in a link error.
Go through your paths, make sure there aren't multiple versions of the DLL available. Make sure that you are linking against the correct version of your DLL. If all else fails, a clean rebuild of your library might help to resolve the issue. You can use a tool like Dependency Walker
to analyze your .EXE and see what DLLs it is dependent upon, and make sure that the proper versions of those DLLs are located where the program can find them.
This kind of link problem typically occurs when the DLL that your program linked against is different from the DLL that it is trying to hook up to at run-time. At link time, the application was essentially told " this procedure will be located at this location in the DLL, so when you run look for it there." But at run-time, the loaded DLL is differently laid-out, so when the application goes to look where it was told it can't find it. This can occur from using different versions of a library, using a library built on a different version of the compiler, etc... There isn't really any kind of quick "this is what you do to fix it" solution, which is why you aren't really getting any answers here