I have two libraries, named a.lib and b.lib. Both libraries have a function char test(void), but return different characters.
a.c (a.lib)
char test(void);char test(void) { return 'a';}
b.c (b.lib)
char test(void);char test(void) { return 'b';}
I create a project link these two libraries and call test() in main() function.
main.c
char test(void);int main(){ char c = test(); return 0; }
I expected it should be "Error: L6200E: Symbol multiply defined" error, but " 0 errors".
Why is there no link error?
Thanks for the reply.
These are our own libraries, but from different departments. I can ask them to have functions with different prefix but I also need a solution for double check.
clliao.tw said:These are our own libraries
Then this really is a fault in the libraries - for the very reasons you are finding!
clliao.tw said:I can ask them to have functions with different prefix
Yes - they need to do that!
They should have done that in the first place - so it seems some education is needed in those departments!
Maybe point them to this thread?
Thanks for your reply. I'll strongly recommend them following the naming rule. I'll also ask them to provide all the object files so that I can double check this issue by linking all the object files.
clliao.tw said: I'll also ask them to provide all the object files so that I can double check
Why would you do that at the Object level?
Surely, it'd be easier at the source level?