Ok, :o it turned out to be a bug in my makefile and nothing to do with implicit/explicit linking, but cheers for the suggestion anyway.
Unfortunately i cant use C++ for it since i am already supplied with a header and a C source file which need to be used - well in all fairness they are extremely badly written and could do with recoding, but i havent got time for, am not being paid enough to do that.
Basically the guy who wrote the library i am using (but dont have the source code for) used some very strange types defined in the C code i have and used in his library so i am coding another DLL to wrap them up and make them accessible to the C# app that i need to write which should also make the functions more accessible, useful and understandable! hopefully this would save a lot of work if they ever need to access the library again.
Unfortunately beacuse it is for a company i cant get you any source code Something Sexy, but in all fairness it is nothing too exciting, mostly just a load of functions that call some functions in another DLL but mess around with datatypes and stuff along the way